やってみたら
"my, tags are, in here".split(" ,")
私は次のようになります
[ 'my, tags are, in here' ]
私が欲しいのに対して
['my', 'tags', 'are', 'in', 'here']
やってみたら
"my, tags are, in here".split(" ,")
私は次のようになります
[ 'my, tags are, in here' ]
私が欲しいのに対して
['my', 'tags', 'are', 'in', 'here']
String.split()
正規表現を受け入れることもできます:
input.split(/[ ,]+/);
この特定の正規表現は、1つ以上のコンマまたはスペースのシーケンスで分割されるため、たとえば、複数の連続するスペースまたはコンマ+スペースのシーケンスでは、結果に空の要素が生成されません。
任意の長さの空白をキャッチするために正規表現を使用できます。これは次のようになります。
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"
使用することをお勧めします.split(/[ ,]+/)
が、遅かれ早かれ自然な文を使用すると、配列に空の要素が含まれることになります。例:['foo', '', 'bar']
。
それがあなたのユースケースに問題がなければ、これは問題ありません。しかし、空の要素を取り除きたい場合は、次のことができます。
var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
"my, tags are, in here".split(/[ ,]+/)
結果は:
["my", "tags", "are", "in", "here"]
input.split(/\s*[\s,]\s*/)
… \s*
0個以上の空白文字(スペースだけでなく、タブや改行も)に一致します。
... [\s,]
1つの空白文字または1つのコンマに一致します
カンマなどの余分な文字を考慮したい場合(私の場合、各トークンは引用符で入力できます)、string.replace()を実行して他の区切り文字を空白に変更し、空白で分割します。
いくつかの単一の文字区切り文字で文字列を分割する必要がある場合は、逆のロジックを使用することを検討してください。区切り文字以外の文字で構成される文字列のチャンクを一致させます。
したがって、空白(と一致する)とコンマ以外の文字のすべてのチャンクを抽出するには\s
、次を使用できます。
console.log("my, tags are, in here".match(/[^\s,]+/g))
// => ["my","tags","are","in","here"]
正規表現のデモを参照してください。空白とコンマ()以外String#match
の1つ以上の()文字の重複しないオカレンスをすべて抽出します。+
[^\s,]