2

それぞれが区切り文字として「、」を持つ文字列の配列を分割しようとしています。改行のパターンに正規表現を使用して、以前の分割後に文字列の配列を取得しました。入力はテキスト ファイルからのもので、テキスト ファイルのパターンは次のとおりです。

私のテキストファイルの内容

"first", "second"
"third", "fourth", "fifth"
"Sixth", "seventh"

2 番目のテキスト ファイル

"Color.auto", "(current == ff) && (current == 00)"
"Color.auto", "(current == ff) ? ((Current > 0) && (current < 10))"

改行文字で分割された文字列の配列を作成するコード。

StreamReader sr = new stream reader(file.txt);
String data = sr.ReadToEnd();
String pattern = @"\r\n";
String[] result = regex.split(data, pattern);

foreach(string store in result)
{
  String temp = store.split(",".ToCharArray());
}

私が直面している問題は、「分割」を使用して「、」の文字列をさらに分割できないことです。分割しようとしている文字列の配列が原因だと思います。

4

2 に答える 2

8

StringSplitOptions パラメータで String.Split を使用するだけです。

string[] tokens = data.Split(new char[] { '\r', '\n', ',', ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

これにより、単一の文字列が取得され、すべての改行部分とすべてのコンマに基づいて分割されます。スペースとタブ文字も入れましたが、不要な場合は削除できます。

'\r'2 番目のパラメーターは、 と の間など、空のトークンが返されないようにするためのものです'\n'

EDIT 2番目のファイルに基づいて、空白を削除したくないのですが、おそらく引用符を削除したいようです。その場合、あなたの行は次のようになります。(見栄えを良くするために2行に分けています。)

char[] delimiters = new char[] { '\r', '\n', ',', '"' };
string[] tokens = data.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
于 2013-08-28T15:24:41.867 に答える
3
//Functional style
var tokens = File.ReadLines(file)
    .SelectMany(line => line.Split(',')) //split lines on commas
    .Select(token => token.Trim(' ')) //remove spaces around tokens
    .Select(token => token.Trim('"')); //remove quotes around tokens

//Query style
var tokens = from line in File.ReadLines(file)
             from token in line.Split(',')
             select token.Trim(' ').Trim('"');

これは、ファイル内の引用符で囲まれた文字列にコンマが含まれていない場合にのみ機能することに注意してください。もしそうなら、正規表現の使用を検討する必要があります。

于 2013-08-28T15:26:44.760 に答える