C# 检查使用Split()创建的数组是否为空#
尝试了一些方法,所有这些方法都应该有效,但我想这是因为我不了解C# 检查使用Split()创建的数组是否为空#,c#,C#,尝试了一些方法,所有这些方法都应该有效,但我想这是因为我不了解String.Split()方法对空字符串的反应 我看了这个问题:它提供了信息,但在这里并不能真正帮助我 这就是我所拥有的,如果ps.HeaderText包含”或是null它仍然跳入if语句,我会收到一个错误,说索引超出范围。不确定它为什么一直跳入循环 if (ps.isSet) { string[] splitHeader = ps.headerText.Split('*'); if (splitHeader !=
String.Split()
方法对空字符串的反应
我看了这个问题:它提供了信息,但在这里并不能真正帮助我
这就是我所拥有的,如果ps.HeaderText
包含”
或是null
它仍然跳入if
语句,我会收到一个错误,说索引超出范围。
不确定它为什么一直跳入循环
if (ps.isSet)
{
string[] splitHeader = ps.headerText.Split('*');
if (splitHeader != null || splitHeader.Length != 0)
{
ps.headerText = splitHeader[0] + company[index] + splitHeader[1];
}
}
非常感谢您的帮助
这就是我所拥有的,如果ps.HeaderText包含“”或为null,它仍然跳转到if语句中,我得到一个错误,表示索引超出范围。不知道为什么它总是跳入循环
如果字符串为空,您将得到一个空条目。这意味着长度将为1
,但您尝试访问splitHeader[1]
(第二个条目)
您可以使用删除mptyentries
解决此问题:
string[] splitHeader = ps.headerText.Split(new[] {'*'}, StringSplitOptions.RemoveEmptyEntries);
if (splitHeader.Length > 1)
{
//.. Your code
您可以在拆分
字符串
、和
之前检查它,如果有p*
字符,示例:
if (ps.isSet)
{
if (!string.IsNullOrEmpty(ps.headerText) && ps.headerText.Contains("*"))
{
string[] splitHeader = ps.headerText.Split('*');
if (splitHeader != null || splitHeader.Length != 0)
{
ps.headerText = splitHeader[0] + company[index] + splitHeader[1];
}
}
}
如果
headerText
为空,您的代码将正常工作(这并不完全正确,splitHeader[1]
仍会导致索引自动失效异常
)。更有可能的是,headerText
为空,这意味着您将在开始检查结果之前获得一个NullReferenceException
因此,在拆分之前添加另一个检查
if (ps != null && ps.headerText != null)
//spit continue along
基本上,我认为问题不在于您对splitHeader
的检查,尽管您应该执行splitHeader.Length>=2)
,因为您将访问第二个元素,检查长度是否不是0不足以防止异常。您需要检查它的长度是否至少比要访问的最大索引大1
PS我显然没有仔细阅读你的问题,因为如果headerText
为空,你将无法进入if
。然而,这仍然是代码可以抛出的地方
if (splitHeader != null || splitHeader.Length != 0)
如果splitHeader
不为null或其长度不为0,则传递此条件。因此,如果它不为null且长度为0,则传递
将
|
更改为&&
。另外,正如里德所说,检查>1
,因为您正在抓取前两个元素。尝试splitHeader!=null&&splitHeader.Length!=0
您说“if ps.HeaderText contais”或为空,它仍然跳入if语句”,那么,假设这样,您说您正在验证HeaderText,对吗?那么,如果我没有误解,您是否应该将第一行更改为“if(ps.HeaderText!=null&&ps.HeaderText.Length>0)…”???我看不到任何关于ps.HeaderText的条件…@您是否正确。我从未检查过ps.HeaderText
的值,这可能就是它不稳定的原因我不敢相信我没有意识到。。。我想我只需要在拆分之前检查字符串。\n我喜欢这样,但我只需要1 if语句。另一个是多余的。如果它不包含*
则无需解析字符串。是的,也许它也可能处于第一个条件ps.isSet
:)巧妙!谢谢你的邀请!这是一个大的条件语句,但比2个if语句要好