在c#中,将字符串拆分为数组然后循环
本文关键字:数组 然后 循环 拆分 字符串 | 更新日期: 2023-09-27 18:19:25
我已经在谷歌上搜索了很多,但是我的c#技能非常糟糕,我只是不明白为什么这不起作用。
我有一个来自会话对象的字符串,我没有任何控制设置。该字符串包含由六个下划线分隔的一些句子。例如:
Sentence number one______Sentence number two______Sentence number three etc
我想把这个字符串分成六个下划线,并返回结果数组中的每一项。
下面是我的代码:
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!"
}
}
每当我运行这个,会话被成功检索,但行说:itemNumber = Convert.ToInt32(I);每次都失败,我得到一个错误说"输入字符串不是一个数字序列。"
谁能给我指一下正确的方向?多谢!
如果您只想获取每个句子并对其进行处理,则可以使用以下命令:
string itemsPlanner = HttpContext.Current.Session["itemsPlanner"].ToString();
string[] arrItemsPlanner = itemsPlanner.Split("______");
foreach (string i in arrItemsPlanner)
{
// Do something with each sentence
}
可以拆分字符串和char(或char[])。在foreach中,'i'将是句子的值,因此您可以连接它或处理它或执行任何操作:)
如果我误解了,我道歉。我希望这对你有帮助。在您的情况下,i
不是一个数字,它是数组中的实际元素。foreach循环没有迭代变量,您只能访问通过i
进行迭代的实际元素。
所以第一个循环迭代i是第一个句子,然后是第二个句子。
如果你想要数字,你必须使用for循环。
所以像这样的
for( int i = 0; i < arrItemsPlanner.length; i++ ){
//on first iteration here
//i is 0
//and arrItemsPlanner[i] id "Sentence number one"
}
希望能有所帮助。
从您的示例中i
不包含有效的整数,因此Convert.ToInt32
失败。foreach
循环用句子数组中的当前条目设置i
,所以基本上i
总是包含主字符串中的一个句子。如果您希望i
作为数组中的索引,则使用for
循环。
来自MSDN的示例。
string words = "This is a list of words______with a bit of punctuation" +
"______a tab character.";
string [] split = words.Split(new Char [] {'_'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in split) {
if (s.Trim() != "")
Console.WriteLine(s);
}
在转换为数字之前需要修剪字符串吗?如果不是,你可以使用Int32.tryParse()
在示例代码中,foreach (string i in arrItemsPlanner)
'i'将逐个获得arrItemsPlanner的字符串值。例如,在第一次迭代时,它将有'Sentence number one',这显然不是一个有效的ont,因此您的转换失败。
i
只包含一个字符串片段,即:number one
Sentence number two
和Sentence number three
。如果你想让它包含一个表示索引的int,使用:1) for
循环2)在foreach
之前定义一个int
,并在foreach
代码中增加它(myint++) !