使用 JavaScript 替换和子字符串替换字符

Replacing characters using javascript replace and substring

本文关键字:替换 字符串 字符 JavaScript 使用      更新时间:2023-09-26

我在js中有一个字符串,如下所示:

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

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

请建议怎么做?

如果你只想替换 %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, "~");
});

另请参阅此简短演示

简短解释
第一个replace(...)只是隔离了"NumberCalledTo="和"NumberCalledFrom="部分,因此不会无意中替换任何其他部分。
Senocd 和第三个replace(...)分别替换了 %2B+ 的所有出现。
(有关正则表达式的详细信息,请单击此处

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

试试这个它会起作用