145

やってみたら

"my, tags are, in here".split(" ,")

私は次のようになります

[ 'my, tags are, in here' ]

私が欲しいのに対して

['my', 'tags', 'are', 'in', 'here']
4

7 に答える 7

290

String.split()正規表現を受け入れることもできます:

input.split(/[ ,]+/);

この特定の正規表現は、1つ以上のコンマまたはスペースのシーケンスで分割されるため、たとえば、複数の連続するスペースまたはコンマ+スペースのシーケンスでは、結果に空の要素が生成されません。

于 2012-04-27T07:46:23.047 に答える
52

任意の長さの空白をキャッチするために正規表現を使用できます。これは次のようになります。

var text = "hoi how     are          you";
var arr = text.split(/\s+/);

console.log(arr) // will result : ["hoi", "how", "are", "you"]

console.log(arr[2]) // will result : "are" 
于 2015-09-22T22:06:04.097 に答える
44

使用することをお勧めします.split(/[ ,]+/)が、遅かれ早かれ自然な文を使用すると、配列に空の要素が含まれることになります。例:['foo', '', 'bar']

それがあなたのユースケースに問題がなければ、これは問題ありません。しかし、空の要素を取り除きたい場合は、次のことができます。

var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
于 2014-05-19T02:08:57.420 に答える
12
"my, tags are, in here".split(/[ ,]+/)

結果は:

["my", "tags", "are", "in", "here"]
于 2012-04-27T07:47:39.893 に答える
10

input.split(/\s*[\s,]\s*/)

\s*0個以上の空白文字(スペースだけでなく、タブや改行も)に一致します。

... [\s,]1つの空白文字または1つのコンマに一致します

于 2012-04-27T07:50:30.333 に答える
2

カンマなどの余分な文字を考慮したい場合(私の場合、各トークンは引用符で入力できます)、string.replace()を実行して他の区切り文字を空白に変更し、空白で分割します。

于 2013-06-21T22:37:49.143 に答える
0

いくつかの単一の文字区切り文字で文字列を分割する必要がある場合は、逆のロジックを使用することを検討してください。区切り文字以外の文字で構成される文字列のチャンクを一致させます。

したがって、空白(と一致する)とコンマ以外の文字のすべてのチャンクを抽出するには\s、次を使用できます。

console.log("my, tags are, in here".match(/[^\s,]+/g))
// => ["my","tags","are","in","here"]

正規表現のデモを参照してください。空白とコンマ()以外String#matchの1つ以上の()文字の重複しないオカレンスをすべて抽出します。+[^\s,]

于 2021-10-05T22:33:25.323 に答える