Javascript 将字符串处理为使用数组分隔的单词

Javascript 将字符串处理为使用数组分隔的单词,javascript,Javascript,您好,我在Javascript中有一个问题,是否可以使用给定的数组,例如 ["old", "great", "other", "long", "good", "last"] 如果你有 var str = "oldgreatotherlonggoodlastfirstnewownlittle" 并使用数组和正则表达式用空格打印它 例如 我正在用javascript做一个简单的web应用程序,只是为了练习。将数组转换为正则表达式,并在每次匹配之前添加一个空格 var str=“oldgreat

您好,我在Javascript中有一个问题,是否可以使用给定的数组,例如

["old", "great", "other", "long", "good", "last"]
如果你有

var str = "oldgreatotherlonggoodlastfirstnewownlittle"
并使用数组和正则表达式用空格打印它

例如


我正在用javascript做一个简单的web应用程序,只是为了练习。

将数组转换为正则表达式,并在每次匹配之前添加一个空格

var str=“oldgreatotherlonggoodlastfirstnewownlittle”;
var newstr=str.replace(/old | great | other | long | good | last/g,“$&”);
console.log(newstr);
str=“greatotherlonggoodlastfirstnewownlittleold”;
newstr=str.replace(/old | great | other | long | good | last/g,“$&”);

console.log(newstr)如果您正在寻找从数组生成正则表达式的方法,可以执行以下操作:

let words = ["old", "great", "other", "long", "good", "last"];
let reg = new RegExp(words.join("|"), "g")
然后,您可以将其与
字符串一起使用。替换
以获得理想的效果

您可以在数组上使用以生成正则表达式,然后将此表达式与字符串一起使用。在下一个示例中,我使用replace,它在某些情况下为替换逻辑提供了更多的控制。但你可以避开它,用@Barmar回答

让arr=[“旧的”、“好的”、“其他的”、“长的”、“好的”、“最后的”];
var str=“oldgreatotherlonggoodlastfirstnewownlittle”;
设re=newregexp(arr.join(“|”)g);
放泄=str.replace(re,(m)=>m+“”);
控制台。注销
.as控制台{背景色:黑色!重要;颜色:石灰;}

.as console wrapper{max height:100%!important;top:0;}
那么如果字符串是
greatotherlonggoodlastfirstnewownlittleold
并且我希望代码像
great other long good LastFirstNewownlittleOld
那样打印出来,该怎么办,如果数组是随机化的,则需要我反复更改正则表达式。正则表达式中单词的顺序不需要与字符串中的顺序相同。无论它们出现在字符串中的哪个位置,它都会匹配它们。我已经添加了这个示例。啊,刚开始只是为了删除“var”吗?这只是因为我使用的是同一个变量,所以我不需要声明两次。请注意,目前无法使用标准的
/[a-z]/
语法将变量传递给正则表达式。以下是此功能的建议:您可以执行
newregexp(“[a-z]”,“g”)
。那个提议有些不同。我的意思是你不能这样做:
let a=“str”;让reg=/${a}/
或类似的东西。我只是不知道该如何描述它。(还是不知道说实话)你给出的链接并没有提出这一点。这是用于
RegExp.escape()
函数的。你说得对:哦,很抱歉,我误解了这一点。谢谢你,你和Barmar的代码片段让我很容易理解!
let words = ["old", "great", "other", "long", "good", "last"];
let reg = new RegExp(words.join("|"), "g")