我在JavaScript中有以下字符串
var mystring = " abcdef(p,q); check(x,y); cef(m,n);"
我想做一个字符串替换,以便我的最终字符串是:
mystring = " abcdef(p,q); someothercheck\(x,y\); cef(m,n);"
替换后x和y应保持相同。并且反斜杠是必要的,因为我需要将它们传递给其他命令。
字符串中还可以有其他Parantheses。
答案 0 :(得分:4)
如果你没有其他括号,那应该很容易。
mystring = mystring.replace("check(", "someothercheck\\(");
mystring = mystring.replace(")", "\\)");
编辑这也适用于多个括号(它不影响空的括号)。 var str =“abcdef; check(x,y); cef();” patt = /((\ w)/ g;
// transform (x in \(x
str = str.replace(patt, '\\($1');
patt = /(\w)\)/g
// transform y) in y\);
str = str.replace(patt, '$1\\)');
// transform check in someothercheck
str = str.replace('check', 'someothercheck');
编辑现在只转换支票字符串。
function convertCheck(str, check, someOtherCheck) {
// console.log(str + " contains " + check + "? ");
// console.log(str.indexOf(check));
if (str.indexOf(check) === -1) return str;
var patt1 = /\((\w)/g,
patt2 = /(\w)\)/g;
str = str.replace(patt1, '\\($1');
str = str.replace(patt2, '$1\\)');
str = str.replace(check, someOtherCheck);
return str;
}
var str = "abcdef(); check(x,y); cef();",
tokens = str.split(';');
for (var i = 0; i < tokens.length; i++) {
tokens[i] = convertCheck(tokens[i], "check", "someothercheck");
}
str = tokens.join(";");
alert(str); // "abcdef(); someothercheck/(x,y/); cef();"
答案 1 :(得分:2)
var myString = "abcdef; check(x,y); cef;";
myString.replace(/(\w+)\(/, 'someother$1(')
.replace(/\(/g, '\\(')
.replace(/\)/g, '\\)')