分割以下字符串的最简单方法是:“1,a,2,a,3,a”然后过滤包含“a”的所有条目以获得结果:[1,2,3]?< / p>
谢谢, 利兹
答案 0 :(得分:5)
string[] result = "1, a, 2, a, 3, a".Split(',')
.Select(s => s.Trim())
.Where(s => s != "a")
.ToArray();
如果您想比较不区分大小写:
string[] result = "1, a, 2, a, 3, a".Split(',')
.Select(s => s.Trim())
.Where(s => !"a".Equals(s, StringComparison.OrdinalIgnoreCase))
.ToArray();
答案 1 :(得分:3)
var results = "1, a, 2, a, 3, a".Split(',')
.Select(x => x.Trim())
.Where(x => x != "a")
.ToArray();
答案 2 :(得分:2)
与LINQ结合使用的简单正则表达式可以粗略但有效地管理:
public static int[] NumberList(string source, string filter)
{
var split = Regex.Split(source, "(\\d+,\\s*\\w)");
var list = (from s in split where s.EndsWith(filter)
select int.Parse( s.Split(',')[0])).ToArray();
return list;
}
第一个Regex.split
将其拆分为包含数字,逗号和字母的数组;然后LINQ查询只从数组中提取以过滤字母结尾的那些项,并将逗号之前的部分作为整数数组返回。
示例电话:
var result = NumberList("1, a, 2, b, 3, a, 4, c", "a");
返回:
[1, 3]
(基于你的澄清,这超出了你实际要求的范围 - 它会起作用,但它确实比实际要求更多)
答案 3 :(得分:1)
你可以使用
int tmp;
string[] arr = str.Split(',').
Where(x=>int.TryParse(x, out tmp)).
ToArray();
答案 4 :(得分:0)
正则与Linq
string[] result = "1, a, 2, a, b , 3, a".Split(',')
.Select(s => s.Trim())
.Where(s => Regex.IsMatch(s, @"^\d+$"))
.ToArray();
结果
1,2,3
答案 5 :(得分:0)
您可以使用:
var arr = "1, a, 2, b, 3, a, 4, c"
.Split(',')
.Select(x => Parse(x))
.Where(x => x != null)
.Select(x => x.Value)
.ToArray();
Parse
方法:
static int? Parse(string value)
{
int result;
if (int.TryParse(value, out result))
{
return result;
}
return null;
}