1

I have a text file which I split with a \n.

text file (test) reads

1
2
3
4

now the confusing part.

code

string test = System.IO.File.ReadAllText(@"C:\Custom tests\"+testselect.Text+".txt");

string[] check = test.Split('\n');

if (check[0] == "1")
{
     label.Text = "whatever";
}

this does not work. The label stays default value. however if I :

label.Text = check[0];

the label displays a 1.

I do not understand this please help.

4

4 に答える 4

3

File.ReadAllLinesまず、テキストを読んで分割する代わりに、単に使用できるはずです....

結果をトリミングする必要がある場合があります。行に余分な空白がある場合、条件が失敗する可能性があります。使用してみてください:

if (check[0].Trim() == "1")
{

これにより、空白が削除され、条件が成功するはずです。

ブレークポイントを配置して、デバッガーで値を検査することもできます。これは、問題をより適切に診断するのに役立ちます。

于 2012-09-05T20:35:30.957 に答える
0

次のようなものを使用できます。

返品がある場合は削除します

string[] check = test.Replace("\r", "").Split('\n');

        if(check[0] == "1")

または改行で分割し、配列内の文字を取得して確認します。

string[] check = test.Split('\n');

        if(check[0][0] == '1')

オプション2を使用します。

編集:

または、このようなものですが、少し OTT であり、\r\n

 char[] check = test.SplitMeUp();

        if(check[0] == '1')


 static class Extensions
{
    public static char[] SplitMeUp(this string str)
    {
        char[] chars = new char[str.Length];
        for (int i = 0; i < chars.Length; i++)
            chars[i] = str[i];

        return chars;
    }
}

編集:

特定の文字を除外するためのその他のもの

public static char[] SplitMeUp(this string str, char[] filterChars = null)
    {
        List<Char> chars = new List<char>();
        for (int i = 0; i < str.Length; i++)
        {
            if(filterChars != null && filterChars.Length > 0 && filterChars.Contains(str[i]))
                    continue; 

            chars.Add(str[i]);
        }

        return chars.ToArray();
    }

そしてそれを次のように使用します

char[] check = test.SplitMeUp(new char[] {'\r', '\n'});

        if(check[0] == '1')

これらの \r\n はすべて無視され、すべてが分割されます。

于 2012-09-05T20:41:12.677 に答える
0

Environment.NewLine を使用する必要があると思います。異なるオペレーティング システムでは、異なる改行文字が使用されます。

すべてのオペレーティング システムのユニバーサル改行とは何ですか? (LFとCR)

于 2012-09-05T20:37:43.087 に答える
0

数字を比較してるだけ?大文字と小文字と空白をチェックする必要があります..

string.Equals(check[0].Trim(), "some value", StringComparison.OrdinalIgnoreCase);
于 2012-09-05T20:39:01.877 に答える