使用javascript replace和substring替换字符

时间:2013-05-22 08:38:51

标签: javascript jquery

我在这样的js中有一个字符串:

var frmSearch ="LoginID=:PersonName=:CallIDNumber=:NumberCalledTo=%2B92+3344038368:NumberCalledFrom=%2B92+3344038368:Notes="

我想删除空格(%2B)并用NumberCalledTo和NumberCalledFrom替换+。数字可以是不同的长度和LoginID,呼叫ID号可以有值或为空。注释可以为空或有价值。

我尝试了这个但是没有用:

 frmSearch = frmSearch.substr(0, frmSearch.length - s.length);
        var NumberCalledTo = frmSearch.substr(frmSearch.indexOf(":NumberCalledTo"), frmSearch.indexOf(":NumberCalledFrom"));
        NumberCalledTo = NumberCalledTo.replace('+', '').replace('%2B', '~');
        var NumberCalledFrom = frmSearch.substr(frmSearch.indexOf(":NumberCalledFrom"), frmSearch.indexOf(":Notes"));
        NumberCalledFrom = NumberCalledFrom.replace('+', '').replace('%2B', '~');

请建议怎么做?

3 个答案:

答案 0 :(得分:0)

var frmSearch ="LoginID=:PersonName=:CallIDNumber=:NumberCalledTo=%2B92+3344038368:NumberCalledFrom=%2B92+3344038368:Notes=";

var r = frmSearch.replace(/\+/g,'~').replace(/%2B/g,'+');

alert(r);

答案 1 :(得分:0)

如果您只想在%2B的值中替换+NumberCalledTo/From(而不是在CallIDNumber等值中),则可以使用一些正则表达式,如下所示:

var str = "LoginID=:PersonName=:CallIDNumber=:NumberCalledTo=%2B92+33440+38368:NumberCalledFrom=%2B92+3344038368:Notes=";
var regex = new RegExp("\\bNumberCalled(To|From)=[^:$]*?[:$]", "g");
str = str.replace(regex, function(match) {
    return match.replace(/%2B/g, "").replace(/\+/g, "~");
});

另请参阅此 short demo

简短说明
第一个replace(...)只是隔离了“NumberCalledTo =”和“NumberCalledFrom =”部件,因此没有其他任何内容被无意更换。
senocd和第三个replace(...)只是分别替换%2B+的所有出现。
(有关正则表达式的详细信息 here 。)

答案 2 :(得分:0)

var mystring = 'LoginID=:PersonName=:CallIDNumber=:NumberCalledTo=%2B92+3344038368:NumberCalledFrom=%2B92+3344038368:Notes=';
var newString1 = mystring.replace(/%2B/g, "~");
var newString2 = newString1.replace(/[+\-]/g, " ");

试试这个会起作用