[英]string.Split() and an if statement
我有一个文本文件,我用\\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。
我不明白这请帮忙。
首先 - 您应该能够使用File.ReadAllLines
而不是阅读文本和拆分....
您可能需要修剪结果。 如果行上有额外的空格,则条件可能会失败。 尝试使用:
if (check[0].Trim() == "1")
{
这将削减任何空格,这将导致条件成功。
您还可以放入断点,并检查调试器中的值。 这有助于您更好地诊断问题。
我相信你应该使用Environment.NewLine。 不同的操作系统使用不同的换行符。
你只是在比较数字吗? 需要检查案例和空白..
string.Equals(check[0].Trim(), "some value", StringComparison.OrdinalIgnoreCase);
你可以使用这样的东西:
如果有的话,删除退货
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并将所有内容分开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.