javascript .replace() 方法无法正常工作

标签 javascript

我正在尝试在javascript中使用replace语句,以便最终我可以用当前在字符串中传递的一些数据创建一个数组。

我有以下 JavaScript:

        console.log('data from server:' + server_rule_segements);
        //remove trailing ~
        server_rule_segements = server_rule_segements.substring(0,server_rule_segements.length-2); // stripping off trailing ~,
        console.log("1 - " + server_rule_segements); 
        server_rule_segements = server_rule_segements.replace("~,,", "~");
        console.log("2 - " + server_rule_segements); 

这是控制台中的结果:

data from server:Home Number,1234,1,no~,,Work Number,12342342,1,no~,,Work Number,12344412341234,1,no~, 
1 - Home Number,1234,1,no~,,Work Number,12342342,1,no~,,Work Number,12344412341234,1,no 
2 - Home Number,1234,1,no~Work Number,12342342,1,no~,,Work Number,12344412341234,1,no 

我想知道为什么替换命令没有替换所有“~,,”实例。 正如您在第二个调试语句中看到的那样,仍然有一个..在我所说的“记录2”中。我确信这很简单,我错过了......但我现在看不到它。

在测试时,我更改了代码,以便调用替换方法两次,如下所示:

server_rule_segements = server_rule_segements.replace("~,,", "~");
server_rule_segements = server_rule_segements.replace("~,,", "~");

然后就可以了。 但我认为我不必这样做。

最佳答案

replace 方法仅替换第一个实例,如果您希望替换所有实例,请使用正则表达式。这很容易,因为替换方法也接受正则表达式:

server_rule_segements = server_rule_segements.replace(/~,,/g, "~");

就可以了。请注意,"g" 标志表示全局替换。如果您不想使用正则表达式,请立即使用 split,然后使用 join,

server_rule_segements = server_rule_segements.split("~,,").join("~");

关于javascript .replace() 方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145600/

相关文章:

javascript - 使用 jQuery 时出现 "Syntax error, unrecognized expression"错误。我究竟做错了什么?

javascript - JavaScript 中的广告拦截器

javascript - 如何使 Mocha 的 grep 选项在浏览器中工作

javascript - D3.js 可折叠强制布局,默认折叠

javascript - 如何从单选按钮中提取值并通过 mvc4 中的 ajax.actionlink 将其传递给操作?

javascript - Symfony Ajax 请求错误 500

asp.net - 如何在 ASP.Net TextBox 的 Leave 事件上调用服务器端函数

javascript - FullCalendar - 根据事件标准每天显示图标

javascript - 我怎样才能使它成为一个异步函数

javascript - Angular 事件处理程序属性更改不会触发监听器