如何从字符串类型数组中删除整数?

Posted

技术标签:

【中文标题】如何从字符串类型数组中删除整数?【英文标题】:How to remove integers from a string type array? 【发布时间】:2020-09-27 03:17:43 【问题描述】:

我有一个字符串类型的数组,其中包含数字和字符,例如 string[] TagsSeperatedArray="tag1","tag2","1234","" 我想从数组中删除 1234 和 ""。 我怎样才能做到这一点。有人可以帮帮我吗。我正在使用 asp.net c#。

foreach(var item in TagsSeperatedArray)
                
                    if()
                    

                    

                

【问题讨论】:

您不能从数组中删除元素,因为您无法更改大小。您可以将元素设置为 null - 这对您来说就足够了吗?如果您遇到的问题是检测数字字符串,我怀疑您应该查看Int32.TryParse 首先,请注意您不能从数组中“删除”任何内容 - 数组(根据定义)是固定大小的;你可以替换个值,或者你可以用更少个值创建一个新数组;使用List&lt;string&gt; 会更容易 - 这可能吗? (您可以从列表中删除) 重新打开,因为这不是要删除字符串 of 的数字部分。 @JonSkeet 是的,你可能是对的。 这能回答你的问题吗? How can I remove numbers/digits from strings in a List<string>? 【参考方案1】:

一种方法是:

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

【讨论】:

【参考方案2】:

您可以为此使用 Linq,例如:

TagsSeparatedArray.Where(item => !int.TryParse(item, out int _))

这将排除那些可以转换为int的。

【讨论】:

【参考方案3】:

基于@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);

干杯

【讨论】:

您的替代方案(没有 lambda)会由于在枚举时修改集合而引发异常。

以上是关于如何从字符串类型数组中删除整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从输入字符串中分离整数并将它们转换为 int 类型以允许对它们进行计算

删除数组中的重复项

Javascript - 如何按 3 种不同的属性类型对对象数组进行排序? (字符串、整数、布尔值)

如何在BigQuery中使用offset和ordinal从包含不同数据类型的数组中选择一个元素?

Oracle中如何用SQL把字符串转换成整型

字符串类型的变量num,如何转换成int类型的整数