Оператор неравенства Не работает с массивом строк
Оператор '!=' Нельзя применить к операндам типа '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 ответа
Вы получаете ошибку, потому что lines
это string[]
ни одного 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
не нужно обрабатывать весь файл.
string[] lines
это массив, и вы проверяете его с 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