Как проверить, что каждый элемент массива строк содержит данные или нет в C # - PullRequest
2 голосов
/ 22 июня 2010

Я создал веб-приложение и использую текстовое поле, и оно может содержать несколько строк данных, потому что я установил его свойство textmode многострочное. Моя проблема в том, что я хочу проверить, что каждая строка содержит данные или нет, поэтому я использую переменную count, которая подсчитывает, сколько строк содержит данные.

string[] data;
int cntindex;   
data = txt_invoicenumber.Text.ToString().Split("\n".ToCharArray());
cntindex = data.Length;
for (j = 0; j < cntindex; j++)
{
    if (data[j]!="")  
    {
        inv_count++;            
    }        
}

Это не работает. Пожалуйста, помогите мне.

Ответы [ 4 ]

1 голос
/ 22 июня 2010

Полагаю, это потому, что новая строка \r\n, поэтому в пустых строках также есть '\r'.
Измените выражение if на:

if (data[j].Trim().Length != 0)
0 голосов
/ 22 июня 2010

Это ответ, который я придумал.

String[] lines = TextBox1.Text.Split(new Char[] { '\r', '\n' },
                                     StringSplitOptions.RemoveEmptyEntries);
Int32 validLineCount = lines.Length;
0 голосов
/ 22 июня 2010
var lb = new String[] { "\r\n" };    
var lines = txt_invoicenumber.Text.Split(lb, StringSplitOptions.None).Length;

Это также будет считать пустые строки. Если вы не хотите считать пустые строки, используйте значение StringSplitOptions.RemoveEmptyEntries.

Не рассчитывайте 100% на "\ r \ n", если у вас мало контроля над окружением.

0 голосов
/ 22 июня 2010

Во-первых, вам не нужно ToString() свойство .Text, поскольку оно уже является строкой.

попробуйте это

string[] lines = txt_invoicenumber.Text.Split(Environment.NewLine);
int lineCount = 0;
foreach(string line in lines)
{
    if(!string.IsNullOrEmpty(line))
    {
        lineCount ++;
        this.ProcessLine(line);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...