1

我有一个文本文件,我用\n.

文本文件(测试)读取

1
2
3
4

现在是令人困惑的部分。

代码

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

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

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

这不起作用。标签保持默认值。但是,如果我:

label.Text = check[0];

标签显示 1。

我不明白这个请帮忙。

4

4 回答 4

3

首先 - 你应该能够使用File.ReadAllLines而不是阅读文本和拆分....

您可能需要修剪结果。如果行上有多余的空格,则条件可能会失败。尝试使用:

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

这将修剪掉任何空白,这应该会导致您的条件成功。

您还可以在调试器中放置断点并检查值。这将帮助您更好地诊断问题。

于 2012-09-05T20:35:30.957 回答
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 回答
0

你可以使用这样的东西:

如果有任何退货,请删除

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

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

或用新行分割并取出数组中的字符并检查它。

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

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

我会使用选项二。

编辑:

或类似的东西,但它有点 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 回答