3

ファイルに次のテキストがあります。

「SHOP_ORDER001」、「SHOP_ORDER002」、「SHOP_ORDER003」、「SHOP_ORDER004」、「SHOP_ORDER005」

今、私はファイルを読み取り、スピルトによって配列に代入することで値を取得しています:

 String orderValue = "";
 string[] orderArray;
 orderValue = File.ReadAllText(@"C:\File.txt");
 orderArray = orderValue.Split(',');

しかし、私は値を次のように取得しています: ここに画像の説明を入力

「ORDER001」、「ORDER002」、「ORDER003」の配列の値が必要です

4

4 に答える 4

3

表示されるの\"は、文字列のデバッガビジュアライザーによって追加されたものです(引用符は特別な文字であり、混乱しないようにエスケープする必要があるため)。文字列がに含まれていないことを心配しないでくださいorderArray

引用符も削除して、配列が次のようになるようにする場合:

SHOP_ORDER001
SHOP_ORDER002
..。

これを(LINQで)使用するだけです:

var orderArray = orderValue.Split(',').Select(x => x.Trim('"'));

ちなみに、各フィールドにコンマが含まれないことが確実String.Splitでない限り、それほど堅牢ではありません。

編集
削除する必要がある場合にコメントに追加したポイントに答えるには、次のようSHOP_に記述します。

var orderArray = orderValue.Split(',')
    .Select(x => x.Trim('"').Substring("SHOP_".Length));
于 2013-02-28T12:45:28.767 に答える
3

この正規表現を使用します

var res = Regex.Matches(orderValue, @"(?<=""SHOP_)[^""]+?(?="")");
于 2013-02-28T12:49:44.207 に答える
1

これを使用できます:

string[] result = Regex.Split(orderValue, "(?:^\"SHOP_)|(?:\",\"SHOP_)|(?:\"$)");

ただし、結果の配列の最初と最後の項目は常に空の文字列になるため、スキップする必要があります。

于 2013-02-28T13:24:11.473 に答える
-1

ばかげた質問ですが、なぜそうしないのですか

.Replace("SHOP_", "");
于 2013-02-28T12:55:34.380 に答える