19

コンマ、スペース、またはセミコロンで区切られた文字列を分割しようとしています。各区切り文字の後にスペースを含めることもできます。例えば

22222,11111,23232 
OR
22222, 11111, 23232 
OR
22222;     11111; 23232
OR
22222 11111 23232 

これらのいずれかが 3 つの値を持つ配列を生成します。["22222","11111","23232"]

これまでのところvar values = Regex.Split("22222, 11111, 23232", @"[\\s,;]+")、次のようにスペースを含む 2 番目と 3 番目の値を持つ配列が生成されます。

["22222"," 11111"," 23232"]
4

5 に答える 5

35

2つの可能性があります。

この場合、文字列を特定の区切り文字で分割します。String.Splitこの特別な目的のために作成されました。この方法は。よりも高速になりRegex.Splitます。

char[] delimiters = new [] { ',', ';', ' ' };  // List of your delimiters
var splittedArray = myString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
于 2013-02-04T14:43:28.547 に答える
8

@文字列に記号を使用しているため、"\"はリテラル スラッシュとして解釈されます。したがって、文字クラスは実際には a "\"、 an "s"、 a","または aとして読み取られ";"ます。余分なスラッシュを削除すると、必要に応じて機能するはずです。

var values = Regex.Split("22222, 11111, 23232", @"[\s,;]+")
于 2013-02-04T14:46:52.627 に答える
2
Regex.Split("22222, 11111, 23232", @"[ ,;]+")

これは私のために働いた

以下の回答も確認してください。実際に必要なのは、いくつかの文字区切り文字に基づいて文字列を分割することだけです-string.splitはおそらくより良い解決策です

于 2013-02-04T14:43:03.447 に答える
1

「コンマ、スペース、またはセミコロンで区切られた文字列を分割しようとしています。各区切り文字の後にスペースを含めることもできます」を文字通り解釈するには、次を試してください。

@"[,;]\s*|\s+"

これには、連続する区切り文字 (空白を除く) が単一の区切り文字として扱われないという特性があります。

しかし、連続するすべての区切り文字を 1 つとして扱いたい場合は、次のようにすることもできます。

@"[,;\s]+"

もちろん、その場合、string.Split他の人が示しているように、より簡単なオプションです。

于 2013-02-04T14:51:56.953 に答える