Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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# 将字符串拆分为字符串_C#_Asp.net - Fatal编程技术网

C# 将字符串拆分为字符串

C# 将字符串拆分为字符串,c#,asp.net,C#,Asp.net,我有一个带有两个不同分隔符(|和~)的字符串。我想首先基于一个分隔符(|)进行拆分,然后循环遍历结果,并用第二个分隔符(~)拆分这些结果。从那里,我想从第二次拆分中获取三个值,并将它们分配给页面上的标签 我遇到的问题是,下面的代码我只能得到项[0],对于项[1]和项[2],我得到一个索引越界错误 我不确定我在这里哪里出了问题,任何帮助都将不胜感激 int rowNumber = 1; foreach (string itemArray in ItemList.Text.Split

我有一个带有两个不同分隔符(|和~)的字符串。我想首先基于一个分隔符(|)进行拆分,然后循环遍历结果,并用第二个分隔符(~)拆分这些结果。从那里,我想从第二次拆分中获取三个值,并将它们分配给页面上的标签

我遇到的问题是,下面的代码我只能得到项[0],对于项[1]和项[2],我得到一个索引越界错误

我不确定我在这里哪里出了问题,任何帮助都将不胜感激

    int rowNumber = 1;
    foreach (string itemArray in ItemList.Text.Split('|'))
    {
        Label tbCM = (Label)FindControl("CM" + rowNumber);
        Label tbCode = (Label)FindControl("Code" + rowNumber);
        Label tbAmt = (Label)FindControl("Amt" + rowNumber);
        HtmlTableRow trItem = (HtmlTableRow)FindControl("trRow" + rowNumber);

        string[] item = itemArray.Split('~');
        tbCM.Text = item[0].TrimStart(',');
        tbCode.Text = item[1];
        tbAmt.Text = item[2];

        trItem.Style.Add("display", "block");

        rowNumber = rowNumber + 1;            
    }     

您必须检查是否存在错误输入:

    string[] item = itemArray.Split('~');

    if (item.Length == 3)
    {
        tbCM.Text = item[0].TrimStart(',');
        tbCode.Text = item[1];
        tbAmt.Text = item[2];
    }
    else
    {
        // handle bad input
    }
顺便说一句:您也可以在一次通话中进行多个拆分:

  string[] Items = itemArray.Split(new char[] {'~', ','});

索引越界错误
表示您访问数组时使用的索引超过了数组的大小。 这意味着您可能有这样一个输入字符串

"aaaa~|ccccc~dddd"
首先将其拆分为“|”

如果你把它除以“~”,你会得到

{"aaaa"}, {"cccc","dddd"}
但您已将数组拆分为
Lenght==1
(在第一种情况下)。 由于这个问题并不完全清楚该计划的真实状态,因此它只是对可能发生的情况的猜测

所以要解决这个问题,你需要

  • 或者修复输入字符串格式(如果是强制格式)

  • 或者修复您的算法,以便能够处理“格式不好”的字符串

  • 或者两者都有

<>最后一件事:考虑使用<代码>分裂(新字符{’,’‘}’)<代码>过载,并在“一次拍摄”中分裂STYNG。


希望这能有所帮助。

输入字符串的格式是什么?您尝试以这种方式拆分字符串的示例将非常有帮助。除了您拆分问题的实际答案外,我认为您做错了什么。这个字符串是某种ViewState替换吗?也许有一种更好/更可读的方法。同意Tim Schmelter的观点-你应该寻找一种更健壮的解决方案,比如将对象序列化为json或viewstate等。我同意;练习防御性编码从来没有坏处。
{"aaaa"}, {"cccc","dddd"}