最简单的方法来parsing一个逗号分隔string的某种对象,我可以循环访问个别值?
什么是最简单的方法来parsing一个逗号分隔string值列表的某种对象,我可以循环,以便我可以轻松访问个人值?
示例string:“0,10,20,30,100,200”
我对C#有一点新意,所以请原谅我提出一个简单的问题。 谢谢。
有这个问题 – 但最终最简单的方法是使用
string s = [yourlongstring]; string[] values = s.Split(',');
如果逗号和条目的数量不重要,并且您希望摆脱“空”值,则可以使用
string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
有一件事,但是这将会保留你的string前后的空格。 你可以用一点Linq的魔法来解决这个问题:
string[] values = s.Split(',').Select(sValue => sValue.Trim()).ToArray();
这就是如果你使用.Net 3.5,并且在你的源文件的顶部使用了System.Linq声明。
var stringToSplit = "0, 10, 20, 30, 100, 200";
// To parse your string var elements = test.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries);
// To Loop through foreach (string items in elements) { // enjoy }
使用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); }
该模式匹配所有非数字字符。 这将限制你的非负整数,但对于你的例子,这将是绰绰有余。
string input = "0, 10, 20, 30, 100, 200"; Regex.Split(input, @"\D+");
如果您使用逗号分隔值文本文件,我认为最好使用Microsoft.VisualBasic.FileIO.TextFieldParser类 。
有时列中会有逗号,比如:
“有的项目”,“另一个项目”,“另外还有一个项目”
在这些情况下,拆分“,”将打破一些列。 也许更简单的方法,但我只是自己的方法(作为奖金,在逗号后面处理空格,并返回一个IList):
private IList<string> GetColumns(string columns) { IList<string> list = new List<string>(); if (!string.IsNullOrWhiteSpace(columns)) { if (columns[0] != '\"') { // treat as just one item list.Add(columns); } else { bool gettingItemName = true; bool justChanged = false; string itemName = string.Empty; for (int index = 1; index < columns.Length; index++) { justChanged = false; if (subIndustries[index] == '\"') { gettingItemName = !gettingItemName; justChanged = true; } if ((gettingItemName == false) && (justChanged == true)) { list.Add(itemName); itemName = string.Empty; justChanged = false; } if ((gettingItemName == true) && (justChanged == false)) { itemName += columns[index]; } } } } return list; }