当字符串

时间:2016-08-31 04:00:28

标签: javascript

不确定此方法的有效性,但是当重复的字符时,我无法将字符串拆分为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);显然不...可能有分裂的方法:"","产品"。对于我之前没有提及这一点,我表示极度的歉意。对此我们表示赞赏!!

例如小提琴: https://jsfiddle.net/ukeeq656/3/

3 个答案:

答案 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));

这是你想要的吗?