如何在javascript中的一定数量的字符后在空格中拆分字符串?

时间:2013-04-26 22:15:54

标签: javascript jquery regex string web

所以我有一个很好的长字符串,我需要在一定数量的字符后在空格中分割Javascript。例如,如果我有

“你是一只狗,我是一只猫。”

我希望它在10个字符后分割,但是在下一个空格...所以不要将狗分开,我希望下一个空格成为分裂点。

我希望我写得清楚,解释起来有点尴尬。

编辑:我需要将所有这些存储到一个数组中。所以按照我的描述将字符串拆分,但将其存储到我可以迭代的数组中。对不起有点困惑 - 就像我说的那样,有点奇怪的描述。

6 个答案:

答案 0 :(得分:17)

考虑:

str = "How razorback-jumping frogs can level six piqued gymnasts!"
result = str.replace(/.{10}\S*\s+/g, "$&@").split(/\s+@/)

结果:

[
 "How razorback-jumping",
 "frogs can level",
 "six piqued",
 "gymnasts!"
]

答案 1 :(得分:8)

.indexOf有一个from参数。

str.indexOf(" ", 10);

您可以分别使用以下方法获取拆分前后的字符串:

str.substring(0, str.indexOf(" ", 10));
str.substring(str.indexOf(" ", 10));

答案 2 :(得分:4)

这就是你追求的吗? http://jsfiddle.net/alexflav23/j4kwL/

var s = "You is a dog and I am a cat.";
s = s.substring(10, s.length); // Cut out the first 10 characters.
s = s.substring(s.indexOf(" ") + 1, s.length); // look for the first space and return the
// remaining string starting with the index of the space.
alert(s);

如果找不到您要查找的字符串,要将其结束,String.prototype.indexOf将返回-1。为确保不会出现错误结果,请在最后一部分之前检查。此外,空格的索引可能是string.length - 1(字符串中的最后一个字符是空格),在这种情况下s.index(" ") + 1将无法提供您想要的内容。

答案 3 :(得分:3)

这应该做你想要的,没有正则表达式

var string = "You is a dog and I am a cat.",
    length = string.length,
    step = 10,
    array = [],
    i = 0,
    j;

while (i < length) {
    j = string.indexOf(" ", i + step);
    if (j === -1) {
        j = length;
    }

    array.push(string.slice(i, j));
    i = j;
}

console.log(array);

jsfiddle

这是一个jsperf比较这个答案和你选择的正则表达式答案。

附加:如果你想修剪每个文本块的空格,那么改变代码就像这样

array.push(string.slice(i, j).trim());

答案 4 :(得分:0)

这是一个适用于某种变化的正则表达式解决方案:

var result = [];
str.replace(/(.{10}\w+)\s(.+)/, function(_,a,b) { result.push(a,b); });

console.log(result); //=> ["You is a dog", "and I am a cat."]

答案 5 :(得分:0)

function breakAroundSpace(str) {
  var parts = [];
  for (var match; match = str.match(/^[\s\S]{1,10}\S*/);) {
    var prefix = match[0];
    parts.push(prefix);
    // Strip leading space.
    str = str.substring(prefix.length).replace(/^\s+/, '');
  }
  if (str) { parts.push(str); }
  return parts;
}

var str = "You is a dog and I am a cat and she is a giraffe in disguise.";
alert(JSON.stringify(breakAroundSpace(str)));

产生

["You is a dog",
 "and I am a",
 "cat and she",
 "is a giraffe",
 "in disguise."]