最简单的方法是将逗号分隔的字符串解析为某种对象,我可以循环访问各个值?

yco*_*omp 57 c# string

将逗号分隔的字符串值列表解析为可以循环的某种对象的最简单方法是什么,以便我可以轻松访问各个值?

示例字符串: "0, 10, 20, 30, 100, 200"

我对C#有点新意,所以请原谅我提出这样一个简单的问题.谢谢.

And*_*tan 138

有这方面的问题 - 但最终最简单的方法是使用

string s = [yourlongstring];
string[] values = s.Split(',');
Run Code Online (Sandbox Code Playgroud)

如果逗号和条目的数量不重要,并且您想要摆脱"空"值,那么您可以使用

string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

但有一件事 - 这将保留字符串前后的任何空格.您可以使用一点Linq魔法来解决这个问题:

string[] values = s.Split(',').Select(sValue => sValue.Trim()).ToArray();
Run Code Online (Sandbox Code Playgroud)

如果您正在使用.Net 3.5,那么您可以在源文件的顶部使用System.Linq声明.


Asa*_*sad 24

   var stringToSplit = "0, 10, 20, 30, 100, 200";
Run Code Online (Sandbox Code Playgroud)

    // To parse your string 
    var elements = test.Split(new[]
    { ',' }, System.StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
    // To Loop through
    foreach (string items in elements)
    {
       // enjoy
    }
Run Code Online (Sandbox Code Playgroud)


mar*_*tin 8

使用Linq,这是一种非常快捷简便的方法.

string mystring = "0, 10, 20, 30, 100, 200";

var query = from val in mystring.Split(',')
            select int.Parse(val);
foreach (int num in query)
{
     Console.WriteLine(num);
}
Run Code Online (Sandbox Code Playgroud)

  • 使用Linq是不是有点矫枉过正..split()返回一个你可以循环的数组.你增加了Linq的复杂性,没有真正的好处.如果有的话,它的可读性会降低. (3认同)
  • @Stevens,你几乎可以循环任何东西,真的,并得到与Linq相同的结果.我个人更喜欢`mystring.Split().选择()`语法本身,因为我对它更熟悉,但我认为@ martin的代码不太可读,因为它使用"高级"C#功能. (3认同)