[英]How to remove integers from a string type array?
我有一个字符串类型的数组,其中包含数字和字符,例如 string[] TagsSeperatedArray={"tag1","tag2","1234",""} 我想从数组中删除 1234 和 "" 。 我怎样才能做到这一点。 有人可以帮帮我吗。 我正在使用 asp.net c#。
foreach(var item in TagsSeperatedArray)
{
if()
{
}
}
一种方法是:
var arr = new[] { "tag1", "tag2", "1234", "" };
Console.WriteLine(string.Join(",", arr)); // tag1,tag2,1234,
var newArr = arr.Where(value => !string.IsNullOrWhiteSpace(value)
&& !int.TryParse(value, out _)).ToArray();
Console.WriteLine(string.Join(",", newArr)); // tag1,tag2
但是请注意,这会分配一个额外的数组等; 使用列表会更有效,因为您可以直接删除:
var list = new List<string> { "tag1", "tag2", "1234", "" };
Console.WriteLine(string.Join(",", list)); // tag1,tag2,1234,
list.RemoveAll(value => string.IsNullOrWhiteSpace(value) || int.TryParse(value, out _));
Console.WriteLine(string.Join(",", list)); // tag1,tag2
您可以为此使用 Linq ,例如:
TagsSeparatedArray.Where(item => !int.TryParse(item, out int _))
这将排除那些可以转换为int
的。
基于@Marc Grawell 的回答
private string[] RemoveNumerics(string[] TheArray)
{
List<string> list = new List<string>();
list.AddRange(TheArray);
list.RemoveAll(value => string.IsNullOrWhiteSpace(value) || int.TryParse(value, out _));
return list.ToArray();
}
如果您不希望它作为 lambda 表达式:
foreach(string value in list)
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out _))
list.Remove(value);
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.