11

区切られたファイルを読み取る機能があります。

区切り文字は、文字列引数によって関数に渡されます。問題は、"\t"区切り文字を渡すと、次のようになってしまう"\\t"ため、Splitがこのシーケンスを見つけることができないことです。

この問題を解決するにはどうすればよいですか?

private void ReadFromFile(string filename, string delimiter)
{

        StreamReader sr = new StreamReader(filename, Encoding.Default);
        string[] firstLine = sr.ReadLine().Split(t.ToCharArray());

        .......
 }
4

6 に答える 6

36

私はあなたが次のようなものを使用していると思います

string sep = @"\t";

この場合、sepは\\tダブルバックスラッシュを保持します

使用するstring sep = "\t"

string content = "Hello\tWorld";
string sep = "\t";
string[] splitContent = content.Split(sep.ToCharArray());
于 2012-09-12T09:31:27.277 に答える
9

Split('\ t')のように、これには単一のキューを使用します。これにより、文字列ではなく文字を渡すことになります。

于 2012-09-12T09:22:03.243 に答える
2

パラメータ値を\t(タブ)の10進数として渡し、Charに変換します。

 int delimeter =9;

 // 9  ==> \t 
 // 10 ==> \n
 // 13 ==> \r

 char _delimeter = Convert.ToChar(delimeter);

 string[] rowData = fileContent.Split(_delimeter);

ハッピープログラミング。

于 2015-02-05T15:42:24.297 に答える
1

区切り文字として「\t」を渡すと、「\t」に変更されることはありません。他の何かがあなたのタブを二重にエスケープしています。

    Blah("\t");
    private static void Blah(string s)
    {
        var chars = s.ToCharArray();
        Debug.Assert(chars.Length == 1);

        var parts = "blah\tblah\thello".Split(chars);            
        Debug.Assert(parts.Length == 3);
    }
于 2012-09-12T09:31:57.930 に答える
0

分割を行う別の方法は、次の方法でTAB(\ t)を空白スペースに置き換えることです。

            if(linea.ToLower().Contains(@"\t"))
                linea = linea.Replace(@"\t", " ");
            retVal = linea.Trim().Split(' ')[1];

このコードは私のために働きます。

于 2014-11-25T22:23:59.437 に答える
-5

試しましたか:Environment.NewLine?

于 2012-09-12T09:29:25.703 に答える