我试图取一个数字串,每个数字用空格分隔,然后把它变成一个列表。用户通过键入数字输入数字串,然后根据需要输入空格。这进入了“myString”。我想取字符串并只取数字,并将其添加到myList。我想要创建的代码是这样的:
for(int i = 0; i < myString.Length; i++)
{
//If its not a space, add it to the list
if (myString[i] != " ")
{
myList.Add(prices[i]);
}
}
然而,错误表示您不能将'!='运算符用于char和string类型。有道理,但我很难找到另一种选择。是否有更有效的方法将字符串:“1 2 3 4 5”转换为列表?
这是针对Google jams代码挑战,因为我只是练习旧问题。链接可以在这里找到: https://code.google.com/codejam/contest/351101/dashboard#s=p0
感谢所有帮助人员!对于像我这样仍然不知道自己在做什么的高中程序员来说,我总是很惊讶SO: - )
答案 0 :(得分:7)
使用Split
方法
var numbers = myString.Split().Select(x => int.Parse(x)).ToArray();
BTW,为了表示char
常量单引号,在C#
中使用。正如评论中已经提到的," "
是string
文字,其中包含空格而不是char
。您应该使用' '
答案 1 :(得分:3)
两件事:
首先,要修复错误,请将您的行更改为:
if (myString[i] != ' ') // change to single quotes.
其次,有一种更简单的方法:
string.Split(new char[] {' '}); // this will return the array you're seeking...
答案 2 :(得分:2)
myString[i]
是char
,因此您应使用" "
单引号代替' '
。
答案 3 :(得分:2)
您可以使用String.Split方法在空格上拆分字符串,从而产生代表数字的搅拌列表。
myList = myString.Split(" ");
答案 4 :(得分:2)
你需要在空间上分割你的字符串。您可以使用LINQ,如:
List<int> list = myString.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToList();
如果您想要一个更安全的选项并将任何无效的条目替换为-1
,您可以使用int.TryParse
,如:
int temp;
List<int> list = myString.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(r => { return int.TryParse(r, out temp) ? temp : -1; })
.ToList();