所以我有一个很好的长字符串,我需要在 Javascript 中在一定数量的字符后面的空格处分割它。例如,如果我有
“你是狗,我是猫。”
我希望它在 10 个字符后拆分,但在下一个空格......所以我希望下一个空格成为拆分点,而不是将 dog 拆分。
我希望我写得很清楚,解释起来有点尴尬。
编辑:我需要将所有这些存储到一个数组中。因此,按照我的描述将字符串拆分,但将其存储到可以迭代的数组中。很抱歉造成混乱——就像我说的那样,描述起来有点奇怪。
所以我有一个很好的长字符串,我需要在 Javascript 中在一定数量的字符后面的空格处分割它。例如,如果我有
“你是狗,我是猫。”
我希望它在 10 个字符后拆分,但在下一个空格......所以我希望下一个空格成为拆分点,而不是将 dog 拆分。
我希望我写得很清楚,解释起来有点尴尬。
编辑:我需要将所有这些存储到一个数组中。因此,按照我的描述将字符串拆分,但将其存储到可以迭代的数组中。很抱歉造成混乱——就像我说的那样,描述起来有点奇怪。
考虑:
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!"
]
.indexOf
有一个from
参数。
str.indexOf(" ", 10);
您可以分别使用以下方法获取拆分前后的字符串:
str.substring(0, str.indexOf(" ", 10));
str.substring(str.indexOf(" ", 10));
这就是你所追求的吗? 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
不会给你你想要的。
这应该做你想做的,没有正则表达式
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);
这是一个比较这个答案和您选择的正则表达式答案的jsperf 。
附加:如果您想修剪每个文本块中的空格,然后像这样更改代码
array.push(string.slice(i, j).trim());
这是一些品种的正则表达式解决方案:
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."]
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."]