Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查使用Split()创建的数组是否为空#_C# - Fatal编程技术网

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语句要好