C# 将字符串拆分为字符串
我有一个带有两个不同分隔符(|和~)的字符串。我想首先基于一个分隔符(|)进行拆分,然后循环遍历结果,并用第二个分隔符(~)拆分这些结果。从那里,我想从第二次拆分中获取三个值,并将它们分配给页面上的标签 我遇到的问题是,下面的代码我只能得到项[0],对于项[1]和项[2],我得到一个索引越界错误 我不确定我在这里哪里出了问题,任何帮助都将不胜感激C# 将字符串拆分为字符串,c#,asp.net,C#,Asp.net,我有一个带有两个不同分隔符(|和~)的字符串。我想首先基于一个分隔符(|)进行拆分,然后循环遍历结果,并用第二个分隔符(~)拆分这些结果。从那里,我想从第二次拆分中获取三个值,并将它们分配给页面上的标签 我遇到的问题是,下面的代码我只能得到项[0],对于项[1]和项[2],我得到一个索引越界错误 我不确定我在这里哪里出了问题,任何帮助都将不胜感激 int rowNumber = 1; foreach (string itemArray in ItemList.Text.Split
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
(在第一种情况下)。
由于这个问题并不完全清楚该计划的真实状态,因此它只是对可能发生的情况的猜测
所以要解决这个问题,你需要
- 或者修复输入字符串格式(如果是强制格式)
- 或者修复您的算法,以便能够处理“格式不好”的字符串
- 或者两者都有
希望这能有所帮助。输入字符串的格式是什么?您尝试以这种方式拆分字符串的示例将非常有帮助。除了您拆分问题的实际答案外,我认为您做错了什么。这个字符串是某种ViewState替换吗?也许有一种更好/更可读的方法。同意Tim Schmelter的观点-你应该寻找一种更健壮的解决方案,比如将对象序列化为json或viewstate等。我同意;练习防御性编码从来没有坏处。
{"aaaa"}, {"cccc","dddd"}