我在asp.net中有textbox1
字段,还有一个显示记录数的文本区域。
我希望在textbox1
中计算拆分的记录,但当textbox1
为空时,文本区域显示为1。
这是代码。
int contacts = textbox1.Text.Split(',').Count();
textarea.Text = contacts.ToString();
答案 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
)。
.... 如果此实例不包含分隔符中的任何字符, 返回的数组由包含此实例的单个元素组成。
你必须检查它,f.e。使用string.IsNullOrEmpty
(或String.IsNullOrWhiteSpace
):
int contacts = 0;
if(!string.IsNullOrEmpty(textbox1.Text))
contacts = textbox1.Text.Split(',').Length;