我正在尝试用多个其他单词替换字符串中的多个单词.字符串是"我有一只猫,一只狗和一只山羊."
然而,这不会产生"我有一只狗,一只山羊和一只猫",而是产生"我有一只猫,一只猫和一只猫".是否可以在JavaScript中同时用多个其他字符串替换多个字符串,以便生成正确的结果?
var str = "I have a cat, a dog, and a goat.";
str = str.replace(/cat/gi, "dog");
str = str.replace(/dog/gi, "goat");
str = str.replace(/goat/gi, "cat");
//this produces "I have a cat, a cat, and a cat"
//but I wanted to produce the string "I have a dog, a goat, and a cat".
Run Code Online (Sandbox Code Playgroud) 我一直试图弄清楚如何将字符串中的一组字符映射到另一个类似于trPerl中的函数的集合.
我发现这个站点显示了JS和Perl中的等效函数,但遗憾的是没有tr等价.
trPerl中的(音译)函数将字符一对一映射,所以
data =~ tr|\-_|+/|;
Run Code Online (Sandbox Code Playgroud)
会映射
- => + and _ => /
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中有效地完成这项工作?
最近,我写了一些代码来过滤字符串中的坏词.而且会有大量的词语被过滤掉.我的代码有效,但性能并不如预期的那么好.
下面的代码只是演示:
方法1:
let list = [ "omg", "bbq", "wth", "hello", "world" ];
let smallString = "wthhello123456worldomg789bbqomgomg";
for (let i = 0; i < list.length; i++) {
smallString = smallString.replace(new RegExp(list[i], "g"), "***");
}
Run Code Online (Sandbox Code Playgroud)
方法2:
let list = [ "omg", "bbq", "wth", "hello", "world" ];
let smallString = "wthhello123456worldomg789bbqomgomg";
for (let i = 0; i < list.length; i++) {
smallString = smallString.split(list[i]).join("***");
}
Run Code Online (Sandbox Code Playgroud)
我还使用jsperf进行性能测试,与split和join或replace进行比较:https://jsperf.com/split-join-vs-replace-dicky
测试结果表明,在更换小字符串时,拆分和连接比替换更快.但是当替换大字符串时它会很慢.(我注意到结果有时会改变)
我真正想要的是什么
我实际上需要一个稳定的功能来更换性能更好的单词.有什么建议吗?它可以是不使用替换或拆分和连接的另一种方法.非常感谢
我想用以下逻辑创建一个正则表达式:1.,如果string包含T用空格2替换它,如果string包含ZremoveZ
我已经写了两个正则表达式,但我无法将它们组合起来:
string.replace(/\T/g,' ') && string.replace(/\Z/g,'');
Run Code Online (Sandbox Code Playgroud)
编辑:我希望正则表达式代码更短
我在关联数组中有几个字符串:
var arr = {
'============================================': '---------',
'++++++++++++++++++++++++++++++++++++++++++++': '---------',
'--------------------------------------------': '---------'
};
Run Code Online (Sandbox Code Playgroud)
我想用相应的值替换每个键的出现次数.我想出的是:
for (var i in arr)
{
strX = str.replace(i, arr[i]);
console.log('arr[\''+i+'\'] is ' + arr[i] + ': ' + strX);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但仅限于首次出现.如果我将正则表达式更改为/i/g,则代码不起作用.
for (var i in arr)
{
strX = str.replace(/i/g, arr[i]);
console.log('arr[\''+i+'\'] is ' + arr[i] + ': ' + strX);
}
Run Code Online (Sandbox Code Playgroud)
你们知道如何解决这个问题吗?
我试图用空字符串("")替换星号(*)和冒号(:),字符串可以如下:
或者: Registration No: already exists*
要么: *Registration No: already exists
所以,我不希望(*)以及(:)和输出应该Registration No already exists如何解决它.
尝试如下:
var txt = str.replace(/:\*/ig,"");
Run Code Online (Sandbox Code Playgroud)
请帮助我,并提前感谢
字符串替换不适用于javascript
我的字符串='购买T恤以上6折优惠.1200' ;
输出字符串='get-flat-50-percent-on-tees-purchase-above-rs.-1200';
这是我的js代码.
var json, xhr = new XMLHttpRequest();
xhr.open("GET","http://www.exmaple.com/api/v1.0/deal/deallimit/6/61f4279fb0cb4d4899810bef06539d06e349",true);
xhr.onload=function() {
var response=xhr.responseText;
var resultValue = JSON.parse(response);
var dealArray = resultValue['All deals'];
console.log(dealArray.length);
var i;
for (i = 0; i < dealArray.length; i++)
{
var key1 = 749;
var key2 = 29;
var orgProID = (dealArray[i]['productid']+dealArray[i]['productkey'])/key2;
var cat = dealArray[i]['categoryname'].toLowerCase();
var catReplace = cat.replace(" ","-");
var pro1 = dealArray[i]['productname'].toLowerCase();
var proReplace = pro1.replace('%','-percent');
var proReplace1 = proReplace.replace(" ","-");
console.log(catReplace+"/"+proReplace1);
if (dealArray[i]['price'] !=0) {
document.getElementById('appendDeals').innerHTML +="<tr><td class='dealName'>"+dealArray[i]['productname']+ " …Run Code Online (Sandbox Code Playgroud) 如何删除字符串中两个不同字母的所有实例?
例如,我想从'abcabc'中删除'a'和'c',使其变为'bb'.
我知道我做不到'abcabc'.replace(/a/g, '').replace(/c/g, '')但是还有另一个我可以使用的regEx,所以我不需要链接replace功能吗?
谢谢!