-1

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

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

我想从 NumberCalledTo 和 NumberCalledFrom 中删除空格 (%2B) 并将 + 替换为 ~。号码可以有不同的长度和 LoginID,Call 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', '~');

请建议怎么做?

4

3 回答 3

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

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

alert(r);
于 2013-05-22T08:47:23.283 回答
0

如果您只想替换%2Band+的值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, "~");
});

另请参阅这个简短的演示

简短说明
第一个replace(...)只是隔离了 "NumberCalledTo=" 和 "NumberCalledFrom=" 部分,所以没有其他任何东西被无意替换。
senocd 和thirdreplace(...)只是分别替换所有出现的%2B+
(有关正则表达式的更多信息,请点击此处。)

于 2013-05-22T08:56:29.910 回答
0
var mystring = 'LoginID=:PersonName=:CallIDNumber=:NumberCalledTo=%2B92+3344038368:NumberCalledFrom=%2B92+3344038368:Notes=';
var newString1 = mystring.replace(/%2B/g, "~");
var newString2 = newString1.replace(/[+\-]/g, " ");

试试这个它会工作

于 2013-05-22T09:00:12.630 回答