12

したがって、特定の文字数に続くスペースでJavascriptで分割する必要がある長い文字列があります。たとえば、私が持っている場合

「あなたは犬で、私は猫です。」

10文字の後に分割したいのですが、次のスペースで...犬を分割するのではなく、次のスペースを分割ポイントにしたいのです。

私はそれを明確に書いたと思いますが、説明するのは少し厄介です。

編集:これをすべて配列に格納する必要があります。したがって、説明したように文字列を分割しますが、反復できる配列に格納します。混乱して申し訳ありません-私が言ったように、説明するのは少し奇妙です。

4

6 に答える 6

21

検討:

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!"
]
于 2013-04-26T22:51:37.557 に答える
11

.indexOfパラメータがありfromます。

str.indexOf(" ", 10);

次のようにして、分割の前後にそれぞれ文字列を取得できます。

str.substring(0, str.indexOf(" ", 10));
str.substring(str.indexOf(" ", 10));
于 2013-04-26T22:22:06.640 に答える
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、必要なものが得られません。

于 2013-04-26T22:20:44.097 に答える
1

いくつかの種類の正規表現ソリューションは次のとおりです。

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."]
于 2013-04-26T22:25:08.887 に答える