我有一个文本文件,我用\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。
我不明白这请帮忙。
答案 0 :(得分:3)
首先 - 你应该只能使用File.ReadAllLines
而不是阅读文本和分裂.......
您可能需要修剪结果。如果行上有额外的空格,则条件可能会失败。尝试使用:
if (check[0].Trim() == "1")
{
这会削减任何空格,这会导致条件成功。
您还可以在其中放置断点,并检查调试器中的值。这有助于您更好地诊断问题。
答案 1 :(得分:0)
我相信你应该使用Environment.NewLine。不同的操作系统使用不同的换行符。
What is the universal newline for all operating systems? (LF and CR)
答案 2 :(得分:0)
你只是在比较数字吗?需要检查案例和空白..
string.Equals(check[0].Trim(), "some value", StringComparison.OrdinalIgnoreCase);
答案 3 :(得分: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并将所有内容拆分。