csharp > .Split で複数のデリミタを使う > string separator = ",{:}"; / .Split(separator.ToCharArray()))


JSON文字列を単純に要素だけ取り出したい。

try1

',', '{', ':', '}'をデリミタとしたい時は参考ページによると、以下のようにすればいいようだ。

.Split(new char [] {',', '{', ':', '}'})

ideoneで実装した。

using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        string sample = "{\"AAA\":{\"bbb\",\"ccc\"},\"ddd\"";
        foreach(var element in sample.Split(new char [] {',', '{', ':', '}'})) {
            if (element.Length > 0) {
                Console.WriteLine(element);
            }
        }
    }
}
結果
Success time: 0.03 memory: 23880 signal:0
"AAA"
"bbb"
"ccc"
"ddd"

improved (by muroさん)

コメントにて @muro さんから教えていただいた、string型のseparatorに文字を格納しておき、.ToCharArray()を使ってSplitを組み合わせる方法の方がコードリーディングがはるかにしやすい。

また、separatorをstring型にすることで、後で変更したりもできそうという点もいい。

実際のコードはmuroさんのコメント参照。

ideoneでも動作確認済。
http://ideone.com/hB38Yg