在javascript中,如何在一定数量的字符后的空格处拆分字符串?
所以我有一个很好的长字符串,我需要在Javascript中按照一定数量的字符在空格处拆分。例如,如果我有 “你是一只狗,我是一只猫。” 我希望它在10个字符后分开,但在下一个空格。。。所以,我希望下一个空间是分割点,而不是分割狗 我希望我写得很清楚,解释起来有点尴尬在javascript中,如何在一定数量的字符后的空格处拆分字符串?,javascript,jquery,regex,string,web,Javascript,Jquery,Regex,String,Web,所以我有一个很好的长字符串,我需要在Javascript中按照一定数量的字符在空格处拆分。例如,如果我有 “你是一只狗,我是一只猫。” 我希望它在10个字符后分开,但在下一个空格。。。所以,我希望下一个空间是分割点,而不是分割狗 我希望我写得很清楚,解释起来有点尴尬 编辑:我需要将所有这些存储到一个数组中。因此,如我所述,将字符串拆分,但将其存储到一个数组中,我可以遍历该数组。抱歉搞混了-就像我说的,描述起来有点奇怪。这就是你想要的吗? 最后,如果找不到要查找的字符串,String.proto
编辑:我需要将所有这些存储到一个数组中。因此,如我所述,将字符串拆分,但将其存储到一个数组中,我可以遍历该数组。抱歉搞混了-就像我说的,描述起来有点奇怪。这就是你想要的吗?
最后,如果找不到要查找的字符串,
String.prototype.indexOf
将返回-1
。为了确保不会得到错误的结果,请在最后一部分之前进行检查。此外,空格的索引可能是string.length-1
(字符串中的最后一个字符是空格),在这种情况下,s.index(“”+1
不会提供您想要的内容。.indexOf
有一个from
参数
str.indexOf(" ", 10);
您可以分别使用以下命令在拆分之前和之后获取字符串:
str.substring(0, str.indexOf(" ", 10));
str.substring(str.indexOf(" ", 10));
以下是针对某些种类的正则表达式解决方案:
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."]
产生
["You is a dog",
"and I am a",
"cat and she",
"is a giraffe",
"in disguise."]
考虑:
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!"
]
这应该是你想要的,没有正则表达式
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);
很好,谢谢你,先生。这就是我想要的,但是我需要一个更大的字符串数组。因此,如果我有一个500个字符的字符串,我希望像您在这里一样解析整个字符串的数组,但只应用于整个字符串。@elclanrs您是一个聪明的家伙,但您应该记录您的代码。:-)感谢您的回复,但我需要将所有内容存储到一个数组中,因此我无法剪切任何内容。这很可能是一个正则表达式的事情。现在更好地了解需求,这是我应该做的或类似的事情,但我通常更喜欢
~
而不是@
作为标记。好东西!最好的答案——谢谢。感谢大家的支持responses@Lasagna:那是@Lasagna:“@”这里是我用作标记的任意字符。它在正则表达式中没有任何特殊意义。如果您需要“10”作为变量,则必须使用,而不是文字。@Lasagna:没错,我可以使用~
或%
,具有相同的效果-主要的是,它不应该出现在文本的其他地方。您选择的答案在拆分点处修剪了空格,但这似乎不属于您的要求。请花几个小时来关注这一点。杰出的
[
"How razorback-jumping",
"frogs can level",
"six piqued",
"gymnasts!"
]
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);
array.push(string.slice(i, j).trim());