如何分析字符串

时间:2014-02-26 21:34:46

标签: c# string

我试图取一个数字串,每个数字用空格分隔,然后把它变成一个列表。用户通过键入数字输入数字串,然后根据需要输入空格。这进入了“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: - )

5 个答案:

答案 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();