我有一个包含csv值的字符串变量,如下所示:
string str = "105, c#, vb, 345, 53, sql51";
所以现在我想只在列表或数组中获取字母数字项而不使用使用循环。
必填结果:
string result = "c#, vb, sql51";
或在列表中或在数组中......
答案 0 :(得分:5)
string str = "105, c#, vb, 345, 53, sql51";
var separator = ", ";
int dummy;
var parts = str.Split(new[]{separator}, StringSplitOptions.RemoveEmptyEntries)
.Where(s => !int.TryParse(s, out dummy));
string result = string.Join(separator, parts);
Console.WriteLine(result);
打印:
c#, vb, sql51
答案 1 :(得分:4)
使用Split
方法拆分,使用LINQ表达式进行过滤,并在结果上调用ToArray
或ToList
以生成过滤后的数组:
var res = str
.Split(new[] {',', ' '})
.Where(s => s.Any(c => !Char.IsDigit(c)))
.ToList();
答案 2 :(得分:0)
"105, c#, vb, 345, 53, sql51".Split(",")
.Where(item => new Regex("[#A-Za-z0-9]").IsMatch(item))
.Select(item=> item.Trim())
.ToList();
注意:不确定OP为什么要过滤掉数字 - 数字是字母数字。
答案 3 :(得分:0)
类似的东西:
var str = "test,test,tes,123,5";
var result = string.Join(",", str.Split(',').Where(s => !s.All(t => Char.IsNumber(t))));
result.Dump();