拆分具有条件的字符串
本文关键字:字符串 有条件 拆分 | 更新日期: 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表达式进行筛选,并对结果调用ToArray
或ToList
以生成筛选数组:
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为什么要过滤掉数字——数字是字母数字。