在 C# 中将字符串拆分为数组然后循环

Dan*_*Dan 1 c# arrays foreach

我在 Google 上搜索了很多,但我的 C# 技能非常糟糕,我就是不明白为什么这不起作用。

我有一个来自会话对象的字符串,我无法控制它的设置。该字符串包含一些由六个下划线分隔的句子。例如:

Sentence number one______Sentence number two______Sentence number three etc
Run Code Online (Sandbox Code Playgroud)

我想用六个下划线分割这个字符串并返回结果数组中的每个项目。

这是我的代码:

string itemsPlanner = HttpContext.Current.Session["itemsPlanner"].ToString();

string[] arrItemsPlanner = itemsPlanner.Split(new string[] { "______" }, StringSplitOptions.None);

foreach (string i in arrItemsPlanner)
{
  newItemsPlanner += "debug1: " + i;  //This returns what looks like a number, as I'd expect, starting at zero and iterating by one each loop.
  int itemNumber;

  try
  {
    itemNumber = Convert.ToInt32(i);
    string sentence = arrItemsPlanner[itemNumber].ToString();
  }
  catch (FormatException e)
  {
    return "Input string is not a sequence of digits.";
  }
  catch (OverflowException e)
  {
    return "The number cannot fit in an Int32.";
  }
  finally 
  {
    return "Fail!"
  }
}
Run Code Online (Sandbox Code Playgroud)

每当我运行此命令时,会话都会成功检索,但该行显示: itemNumber = Convert.ToInt32(i); 每次都会失败,并且收到错误消息“输入字符串不是数字序列”。

有人能指出我正确的方向吗?

非常感谢!

小智 5

如果您只想获取每个句子并对其执行某些操作,则可以这样做:

string itemsPlanner = HttpContext.Current.Session["itemsPlanner"].ToString(); 
string[] arrItemsPlanner = itemsPlanner.Split("______"); 

foreach (string i in arrItemsPlanner) 
{ 
  // Do something with each sentence
}
Run Code Online (Sandbox Code Playgroud)

您可以拆分字符串以及 char(或 char[])。在 foreach 中,“i”将是句子的值,因此您可以连接它或处理它或执行任何操作:)

如果我误解了,我很抱歉。我希望这有帮助:)