Yuv*_*dam 4 javascript regex jquery
我有一个JS字符串需要替换它的几个字符.
例如,对于输入字符串:
s = 'ABAC'
Run Code Online (Sandbox Code Playgroud)
我想B用Cs 替换所有s,反之亦然.但是,执行标准正则表达式替换是不够好的,因为replace()s不应该以锁步方式发生,而是在字符串上单次传递.
>>> s.replace(/B/g, 'C').replace(/C/g, 'B')
'ABAB' // not good
Run Code Online (Sandbox Code Playgroud)
是否有一种优雅的方式replace()在一次传递中做多个字符串?
(解决方案必须适用于任意替换char)
var str = 'ABACACCBA',
out = str.replace(/[CB]/g, function(c) {
return {
"B" : "C",
"C" : "B"
}[c];
});
console.log(out); /* ACABABBCA */
Run Code Online (Sandbox Code Playgroud)
您所要做的就是定义要匹配的所有字符,然后定义具有交换规则的对象.也可以用这种方式进行替代
var str = 'ABACACCBA',
out = str.replace(/\w/g, function(c) {
return {
"B" : "C",
"C" : "B"
}[c] || c;
});
console.log(out); /* ACABABBCA */
Run Code Online (Sandbox Code Playgroud)
在此示例中,您为匹配的每个字符执行函数,但只有在您定义了对象的条目(否则返回原始字符)时才进行交换.
它显然更昂贵(因此最好使用第一个示例)但在这种情况下,您可以避免列出要在正则表达式中匹配的所有字符.
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |