为什么这不起作用
var value = arr[row][col].replace(new RegExp('"', 'g'),'""');
错误:网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ; InfoPath.2; Tablet PC 2.0) 时间戳:星期二,2012年4月10日11:22:01 UTC
消息:对象不支持此属性或方法 行:1041 查尔:25 代码:0 URI:http://example.com/?
消息:对象不支持此属性或方法 行:1041 查尔:25 代码:0 URI:http://example.com/?
消息:对象不支持此属性或方法 行:1041 查尔:25 代码:0 URI:http://example.com/?
注意::直接从IE8的调试器中复制错误
答案 0 :(得分:2)
两个原因:您没有替换子字符串的出现,而是尝试在DOM-Element上使用字符串操作方法。最好做这样的事情:
var value = arr[row][col].innerHTML.replace(new RegExp('"', 'g'),'""');
但在这种情况下,我真的不喜欢正则表达式(我喜欢正则表达式,但仅在需要时)。我会将所有"
替换为""
,如下所示:
var value = arr[row][col].innerHTML.split('"').join('""');
更快,更易于阅读,并为您提供相同的结果。虽然要记住一件事:如果源字符串已经包含双引号(""
),那么它们将翻两番。如果这是一种可能的情况,你需要这样的正则表达式:
var value = arr[row][col].innerHTML.replace(/(?:[^"]"(?:[^"]))/g,'""');
这只会匹配既没有引号也没有引号的引号...选择上述任何解决方案,但请记住:如果您选择使用第一个选项,研究表明您已经多了50%可能会有更少的朋友; - )。