Javascript 如何替换字符串中的多个字符?
我想创建一个具有以下逻辑的正则表达式: 1.,如果字符串包含Javascript 如何替换字符串中的多个字符?,javascript,regex,Javascript,Regex,我想创建一个具有以下逻辑的正则表达式: 1.,如果字符串包含T将其替换为空格 2.如果字符串包含ZremoveZ 我已经写了两个正则表达式,但我不能将它们合并: string.replace(/\T/g,' ') && string.replace(/\Z/g,''); 编辑:我希望正则表达式代码更短您可以捕获两者,然后决定在回调中执行什么操作: string.replace(/[TZ]/g,(m => m === 'T' ? '' : ' ')); var字符串='
T
将其替换为空格
2.如果字符串包含Z
removeZ
我已经写了两个正则表达式,但我不能将它们合并:
string.replace(/\T/g,' ') && string.replace(/\Z/g,'');
编辑:我希望正则表达式代码更短您可以捕获两者,然后决定在回调中执行什么操作:
string.replace(/[TZ]/g,(m => m === 'T' ? '' : ' '));
var字符串='AZorro选项卡'
var res=string.replace(/[TZ]/g,(m=>m==='T'?“”));
console.log(res)
您是否在寻找类似的内容
ES6
香草的
"ATAZATA".replace(/[TZ]/g,function (char) {return key[char] || ''});
或
这似乎不需要正则表达式。只需2个链式替换即可
var str='[T]和[Z],但不是[T]和[Z];
var result=str.replace('T','').replace('Z','');
控制台日志(结果)代码>您可以创建自定义函数来替换所需的所有字符:
const replaceAll = (text, obj) => {
return [...text].map(each => {
for (const o in obj){
(each == o) ? each = obj[o] : o;
}
return each;
}).join('');
};
replaceAll('abc', {'a':'x', 'b':'y'}); //"xyc"
下面是另一种使用字符串的替代方法。prototype
:
String.prototype.replaceAll = function(obj) {
let finalString = '';
let word = this;
for (let each of word){
for (const o in obj){
const value = obj[o];
if (each == o){
each = value;
}
}
finalString += each;
}
return finalString;
};
'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"
为什么要合并?只需使用var res=string.replace(/\T/g')。replace(/\Z/g')
@VadimB我可以看到两个可能的原因:1:OP希望regex代码更短,2:OP希望将regex存储在对象或列表中Regex@nickzoum可能的副本也可以考虑替换的DICT,如<代码> {t:``,z:'} /c> >然后>代码> M= >替换[M]。
请记住,如果这是针对web@Liam的,那么您所说的是正确的,但是易读性方面的es6看起来更好,效率也更高replace(string)
只替换一次。尝试使用[T]和[Z]以及更多[Z]
@georg True,因此我在答案中添加了这一见解。谢谢。这是最简洁的,对我来说ES6语法非常有用。非常感谢。
const replaceAll = (text, obj) => {
return [...text].map(each => {
for (const o in obj){
(each == o) ? each = obj[o] : o;
}
return each;
}).join('');
};
replaceAll('abc', {'a':'x', 'b':'y'}); //"xyc"
String.prototype.replaceAll = function(obj) {
let finalString = '';
let word = this;
for (let each of word){
for (const o in obj){
const value = obj[o];
if (each == o){
each = value;
}
}
finalString += each;
}
return finalString;
};
'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"