不等式运算符不适用于字符串数组

时间:2013-10-11 16:24:02

标签: c# inequality

运算符'!='不能应用于'string []'和'string'类型的操作数 (是的,我之前已经问过类似的问题,我看了一个但是使用的上下文/元素是不同类型的,所以我很感激帮助我的情况:))

我有一个文件,我想在文件中以“0”开头的一行后立即停止阅读。 我的while循环遇到了不等式运算符的问题。

private void button1_Click(object sender, EventArgs e)
{
    // Reading/Inputing column values

    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {

        string[] lines = File.ReadAllLines(ofd.FileName).Skip(8).ToArray();
        textBox1.Lines = lines;

        while (lines != "0") // PROBLEM Happens Here
        {

            int[] pos = new int[3] { 0, 6, 18 }; //setlen&pos to read specific colmn vals
            int[] len = new int[3] { 6, 12, 28 }; // only doing 3 columns right now


            foreach (string line in textBox1.Lines)
            {

                for (int j = 0; j < 3; j++) // 3 columns
                {
                    val[j] = line.Substring(pos[j], len[j]).Trim(); // each column value in row add to array
                    list.Add(val[j]); // column values stored in list

                }

            }

        }
    }

2 个答案:

答案 0 :(得分:5)

您收到错误是因为linesstring[]而不是string。但是你想要停留在以"0"开头的第一行。因此,您可以在foreach

中添加检查
foreach (string line in lines)
{
    if(l.StartsWith("0")) break;
    // ...

但是,我会使用此方法来获取相关的行:

var lines = File.ReadLines(ofd.FileName).Skip(8).TakeWhile(l => !l.StartsWith("0"));

不同之处在于ReadLines不需要处理整个文件。

答案 1 :(得分:2)

string[] lines数组,您使用 a string进行检查。

应该是这样的:

//to check if an element is an empty string
lines[index] != "" 

//to check if the array is null
lines != null 

//to check if the array has any elements
lines.Count() != 0 
lines.Length != 0