我在这样的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', '~');
请建议怎么做?
答案 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, " ");
试试这个会起作用