1

"[{a},{b},{c}]" を次のような配列に分割する最良の方法は何ですか?stringt

t[0] == "a"
t[1] == "b"
t[2] == "c"

入力文字列を逐語的に考えると、角括弧と中括弧が実際に存在します。

更新: これは、分割する必要があるもののより具体的なサンプルです

[{ pk:"4",id:"4",cb_program_id:"2.0000",DataSource:"1",Status:"0",CutoffDate:"15/10/2012 14:05:04" }, 
{ pk:"3",id:"3",cb_program_id:"2.0000",DataSource:"1",Status:"0",CutoffDate:"15/10/2012 14:05:02" }, ... ]
4

3 に答える 3

6

String.Split不要な文字をすべて取り除くために使用します。

"[{a},{b},{c}]".Split(new char[] {'[', ']', '{', '}', ','}, StringSplitOptions.RemoveEmptyEntries);

編集:OPの編集に続いて、@Danielの回答は部分文字列の整合性を維持するのにより適しています。

于 2013-01-08T11:52:20.280 に答える
4
var t = s.Trim('[', ']').Split(',').Select(x => x.Trim('{', '}')).ToArray();

これにより、最初に外側の括弧が削除され、コンマで分割され、結果の最初と最後にある中括弧が削除されます。

コンマや中括弧などの埋め込まれた特殊文字をカバーするには、それらをエスケープする必要があります。そうしないと、複数の方法で分割される可能性のあるあいまいな文字列が存在するためです。

于 2013-01-08T11:53:28.440 に答える
0

これが実際の例です。

string str = "[{a},{b},{c}]";
string[] t = str.Split(new char[] { '[', ']', '{', '}', ',' },
             StringSplitOptions.RemoveEmptyEntries)
             .ToArray();

出力:

t[0] == "a"
t[1] == "b"
t[2] == "c"
于 2013-01-08T11:55:11.847 に答える