0

次のコードを使用して、タブ区切りのストリームを読み取っています。

using (StreamReader readFile = new StreamReader(path))
{
    string line;
    string[] row;
    while ((line = readFile.ReadLine()) != null)
    {
        row = line.Split('\t');
        parsedData.Add(row);
    }
}

ただし、場合によっては、ユーザーがスペース区切りまたはコンマ区切りのファイルを提供することがあります。row = line.Split('\t');または に変更する代わりに、区切り文字を自動的に検出するにはどうすればよいですrow = line.Split(' ');row = line.Split(',');?

ありがとう。

4

4 に答える 4

1

事前にそれらを区別することはできません。

あなたができることは、それらすべてに分割しようとすることです:

row = line.Split('\t', ' ', ',');

もちろん、これは区切り文字間のデータに区切り文字が含まれていないことを前提としています。

于 2013-04-09T09:00:50.647 に答える
1

string.Split メソッドを使用して、データを文字数で分割できます

var delims = new [] {',', '\t', ' ' };  
var result = line.Split(delims, StringSplitOptions.RemoveEmptyEntries);

または、正規表現を使用できます

var result = Regex.Split(line, @"[,\t ]+")
于 2013-04-09T09:01:23.480 に答える
0

セパレーターとは何か、それを検出する方法を定義する必要があります。「ファイルのセパレーターは、最初の行で最初に遭遇した引用符で囲まれていない空白文字です」と言う場合、最初の行を読んでセパレーターを決定できます。.Split()その後、それをメソッドに渡すことができます。

于 2013-04-09T09:01:26.783 に答える
0
row = line.Split(new char[]{' ', ',', '\t'}, StringSplitOptions.RemoveEmptyEntries);
于 2013-04-09T09:01:50.737 に答える