文本框为空但仍显示计数

时间:2017-07-28 10:10:21

标签: asp.net

我在asp.net中有textbox1字段,还有一个显示记录数的文本区域。  我希望在textbox1中计算拆分的记录,但当textbox1为空时,文本区域显示为1。

这是代码。

int contacts = textbox1.Text.Split(',').Count();
textarea.Text = contacts.ToString();

3 个答案:

答案 0 :(得分:0)

试试这个

int contacts = string.IsNullOrEmpty(string.textbox1.Text)? string.empty: textbox1.Text.Split(',').Count();
        textarea.Text = contacts.ToString();

答案 1 :(得分:0)

这是因为即使textbox1.Text是一个空字符串,它仍被视为一个项目。您需要使用StringSplitOptions.RemoveEmptyEntries,以便在生成调用Split的结果时忽略空条目:

var contacts = textbox1.Text.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Count();

要将您所写的内容分解为单个语句,您所拥有的是:

var items = textbox1.Text.Split(new char[] { ', ' }, StringSplitOptions.RemoveEmptyEntries);
var countOfItems = itemsFromText.Count();

如果查看items,您会看到它是一个字符串数组(string[]),其中包含textbox1.Text文本中每个项目的一个条目。

即使传入空字符串(即textbox1为空),仍然会返回一个字符串,因此写入的代码返回 1 ,而在countOfItems我已经将代码分开,因为使用了StringSplitOptions.RemoveEmptyEntries,它将 0

String.Split overload that takes StringSplitOptions as a parameter的msdn上的文档有更多关于此的示例和详细信息。

答案 2 :(得分:0)

String.Split始终返回至少一个字符串,如果您传递string.Empty,您将获得一个 输入字符串的字符串(在本例中为string.Empty )。

Documentation

  

....   如果此实例不包含分隔符中的任何字符,   返回的数组由包含此实例的单个元素组成

你必须检查它,f.e。使用string.IsNullOrEmpty(或String.IsNullOrWhiteSpace):

int contacts = 0;
if(!string.IsNullOrEmpty(textbox1.Text))
    contacts = textbox1.Text.Split(',').Length;