如何将逗号分隔的字符串值列表解析成某种对象,以便可以循环访问每个值并轻松地访问各个值?
例如字符串:"0, 10, 20, 30, 100, 200"
我有点新手C#,所以请原谅我提出这样一个简单的问题。谢谢。
如何将逗号分隔的字符串值列表解析成某种对象,以便可以循环访问每个值并轻松地访问各个值?
例如字符串:"0, 10, 20, 30, 100, 200"
我有点新手C#,所以请原谅我提出这样一个简单的问题。谢谢。
使用这种方法有一些需要注意的地方,但最终最简单的方法将是使用
string s = [yourlongstring];
string[] values = s.Split(',');
如果逗号和条目的数量不重要,并且您想要摆脱“空”值,那么可以使用:
string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
不过有一点需要注意,这会保留你的字符串前后的任何空格。你可以使用一些 Linq 魔法来解决这个问题:
string[] values = s.Split(',').Select(sValue => sValue.Trim()).ToArray();
如果你正在使用 .Net 3.5 并且在源文件的顶部有 using System.Linq
声明,那么就是这样的。
"(?<value> \d +)"
,然后您可以在每个 Match.Groups["value"]
中获取它。您还可以在此过程中将它们转换为整数。 - Robert Koritnik 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
}
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);
}
mystring.Split().Select()
这种语法,因为我更熟悉它,但我认为@martin的代码并不会因为使用了“高级”的C#特性就变得难以阅读。 - stragerstring input = "0, 10, 20, 30, 100, 200";
Regex.Split(input, @"\D+");
"一些项目","另一个项目","还有一个项目,也是"
在这种情况下,根据逗号分割可能会破坏某些列。也许有更简单的方法,但我自己开发了一种方法(作为奖励,处理逗号后面的空格并返回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;
}
string values = "0,1,2,3,4,5,6,7,8,9";
foreach(string value in values.split(','))
{
//do something with individual value
}