Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,如何在一定数量的字符后的空格处拆分字符串?_Javascript_Jquery_Regex_String_Web - Fatal编程技术网

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

在javascript中,如何在一定数量的字符后的空格处拆分字符串?,javascript,jquery,regex,string,web,Javascript,Jquery,Regex,String,Web,所以我有一个很好的长字符串,我需要在Javascript中按照一定数量的字符在空格处拆分。例如,如果我有 “你是一只狗,我是一只猫。” 我希望它在10个字符后分开,但在下一个空格。。。所以,我希望下一个空间是分割点,而不是分割狗 我希望我写得很清楚,解释起来有点尴尬 编辑:我需要将所有这些存储到一个数组中。因此,如我所述,将字符串拆分,但将其存储到一个数组中,我可以遍历该数组。抱歉搞混了-就像我说的,描述起来有点奇怪。这就是你想要的吗? 最后,如果找不到要查找的字符串,String.proto

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

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

我希望它在10个字符后分开,但在下一个空格。。。所以,我希望下一个空间是分割点,而不是分割狗

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


编辑:我需要将所有这些存储到一个数组中。因此,如我所述,将字符串拆分,但将其存储到一个数组中,我可以遍历该数组。抱歉搞混了-就像我说的,描述起来有点奇怪。

这就是你想要的吗?


最后,如果找不到要查找的字符串,
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());