我有一个字符串,其中包含一个用@-和-@括起来的单词,如下所示:此@ -book- @由作者@ -gameauthor- @创建。
我需要一个函数,该函数将在该包装之间找到单词的所有实例并将其返回。如果其中仅包含一个单词,则效果很好。但是,如果有两个单词,它将返回第一个@-和最后一个-@之间的所有内容。因此,它不会返回书籍和游戏作者,而是返回:-book- @由作者@ -gameauthor-创建
我编写了此函数和代码,如何改进它:
function findBetween(text, firststring, secondstring) {
//Function to text between two strings.
var firstvariable = firststring;
var secondvariable = secondstring;
var text = text;
var regExString = new RegExp("(?:" + firstvariable + ")((.[\s\S]*))(?:" + secondvariable + ")", "g");
var strResult = regExString.exec(text);
if (strResult != null) {
return strResult[1];
}
}
var str = "This @-book-@ is created by author @-gameauthor-@.";
var test = findBetween(str, "@-", "-@");
alert(test);
编辑:这是使用下面的解决方案的更新的代码:
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
var book = "Moby Dick";
var gameauthor = "Joey DiPerla";
var str = "This @-book-@ is created by author @-gameauthor-@.";
var myArray = str.split("@");
var len = myArray.length;
for(let i = len-1;i>=0;i--){
myArray[i] = myArray[i].replace(/-/g, '');
if(i%2 == 0) {
myArray.splice(i,1)
if ( myArray[i] !== undefined) {
var find = "@-" + myArray[i] + "-@";
var replace = eval(myArray[i]);
str = replaceAll(str, find, replace);
}
}
}
alert(str);
您想使用split函数将字符串分解为字符串数组,然后删除'-'。最后,删除不需要的元素。
var str = "This @-book-@ is created by author @-gameauthor-@.";
var myArray = str.split("@");
var len = myArray.length;
for(let i = len-1;i>=0;i--){
myArray[i] = myArray[i].replace(/-/g, '');
if(i%2 == 0) myArray.splice(i,1);
}
console.log(myArray)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句