不确定此方法的有效性,但是当重复的字符时,我无法将字符串拆分为2。
var match = 's';
var str = "message";
var res = str.split(match, 2);
例如我试图在字符串" message"上使用split(),结果为:
me,""
所以我这样做了:
res = str.split(match, 3);
所以现在它导致了:
me,,age
但是你可以看到我仍然错过了第二个'在"消息"串。我试图得到的是我将匹配的字符(在上面的情况下是动态生成的var匹配)传递给split()并分成2个。我希望得到这样的东西:
res = me,,sage
是可以使用split()还是有更好的方法来实现这个目标?
P.S:在小提琴中,我给了另一个字符串,例如:(string =" shadow"),它可以正常工作。 仅当字符串中有重复的字母时才会失败!小提琴:https://jsfiddle.net/ukeeq656/
EDIT ::::::::::::
感谢大家帮助我解决这个问题...对于输入的最后一分钟更新感到抱歉,我刚才意识到var match;
也可能是一个词,就像在var match = 'force';
中一样而不仅仅是var match ='s';
字符串是" forceProduct",所以当我的匹配不仅仅是一个字母时,这种方法有效:str.split(match, 2);
,但str.indexOf(match);
显然不...可能有分裂的方法:"","产品"。对于我之前没有提及这一点,我表示极度的歉意。对此我们表示赞赏!!
答案 0 :(得分:3)
我不认为split()是执行此操作的正确方法。
请参阅以下内容:
var match = 's';
var str = "message";
var index = str.indexOf(match);
var res =[];
res[0] = str.substring(0, index);
res[1] = " ";
res[2] = str.substring(index + 1);
console.log(res);
答案 1 :(得分:2)
我不确定你的最终目标是什么,但我认为这会让你得到你想要的东西。
var match = 's';
var str = "message";
var index = str.indexOf(match);
var res = str.substring(0, index) + ',' + str.substring(index + 1);
alert(res); // me,sage
答案 2 :(得分:1)
您可以编写一个函数来执行此操作;
function newSplit(str, match) {
var num = str.indexOf(match);
var res = [];
res.push(str.substring(0, num));
//res.push(str.substring(num + 1, str.length)); // this line has been modified
res.push(str.substring(num + match.length, str.length));
return res;
}
var match = 'force';
var str = 'forceProduct';
console.log(newSplit(str, match));
这是你想要的吗?