拆分条件字符串

时间:2013-06-05 09:30:00

标签: c# .net

我有一个包含csv值的字符串变量,如下所示:

string str = "105, c#, vb, 345, 53, sql51";

所以现在我想只在列表数组中获取字母数字项而不使用使用循环

必填结果:

string result = "c#, vb, sql51";

或在列表中或在数组中......

4 个答案:

答案 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表达式进行过滤,并在结果上调用ToArrayToList以生成过滤后的数组:

var res = str
    .Split(new[] {',', ' '})
    .Where(s => s.Any(c => !Char.IsDigit(c)))
    .ToList();

Demo on ideone

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