拆分具有条件的字符串

本文关键字:字符串 有条件 拆分 | 更新日期: 2023-09-27 18:16:55

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

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

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

所需结果:

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

或在列表中或在数组中。。。

拆分具有条件的字符串

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

使用Split方法拆分,使用LINQ表达式进行筛选,并对结果调用ToArrayToList以生成筛选数组:

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

在ideone上演示。

类似于:

var str = "test,test,tes,123,5";
var result = string.Join(",", str.Split(',').Where(s => !s.All(t => Char.IsNumber(t))));
result.Dump();
"105, c#, vb, 345, 53, sql51".Split(",")
       .Where(item => new Regex("[#A-Za-z0-9]").IsMatch(item))
           .Select(item=> item.Trim())
                 .ToList();

注意:不确定OP为什么要过滤掉数字——数字是字母数字。