我正在使用 javascript 函数,但遇到了一个小问题。我希望函数将“输入”替换为“#”,所以我使用:coment = coment.replace(/\\n/gi,"*#*");
当评论有任何“输入”但当评论没有任何“输入”或评论为空白时,它会完美运行,它会停止工作并发送错误消息:
'NoneType' 对象没有属性 'replace'
我如何控制它是否有任何“输入”它替换,如果没有,则不做任何事情
“评论”来自于:
<textarea id="coment"></textarea>
谢谢!
最佳答案
声明
coment = coment.replace(/\\n/gi,"*#*");
...表示“用 #(不区分大小写)替换字符串中反斜杠后跟字母 n 的所有部分。如果您的目标是替换换行符,你的反斜杠太多了:
coment = coment.replace(/\n/gi,"*#*");
不过,这本身并不是问题。从错误消息来看,有时 comment
似乎不是字符串,因此没有 replace
功能。可能是 undefined
或 null
。如果您知道它将是 undefined
、null
或字符串,您可以这样做:
if (coment) {
coment = coment.replace(/\n/gi,"*#*");
}
如果它可能是一个数字或其他东西,不管你最后总是想要一个字符串,那么:
coment = (coment === undefined || coment === null)
? ""
: String(coment).replace(/\n/gi,"*#*");
(不要只是做 comment = comment ? ...
因为如果 comment
是数字 0
,那不会给你的预期结果。)
顺便说一句,因为一些浏览器使用 \r\n
作为换行符而其他浏览器使用 \n
,你可能最好使用 \r?\n
(或 \r{0,1}\n
),而不仅仅是正则表达式中的 \n
。
关于JavaScript 替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067537/