【问题标题】:List <string> smart way to remove characters from items [duplicate]List <string> 从项目中删除字符的智能方法[重复]
【发布时间】:2017-03-21 11:03:35
【问题描述】:

我有一个字符串 List ;目标是从项目中删除“RGBI1”字符。 实现这一目标的最佳方法是什么。尝试学习其他方法来处理这种情况。 PS循环内循环不是我的一杯茶。感谢您的宝贵时间。

E.G

List<string> stringlist = new List<string> 
    {  
        "RGBI1red", 
        "green", 
        "RGBI1pink", 
        "purple"
    };

【问题讨论】:

  • 您可能想查看string.Replace。请注意,字符串是不可变的,因此您必须将结果分配回列表。
  • stringlist.select(x=&gt;x.replace('RGBI1', '')).ToList(); 你可以使用 Linq。注意,这不会修改原始字符串。
  • 我想你还没有在互联网上搜索过这个......
  • 您想从列表中删除字符串“RGBI1”中的字符,还是只删除整个子字符串的出现?在后一种情况下,您是要删除所有出现,还是只删除给定字符串以子字符串开头的那些?
  • 感谢大家的及时回复。我会快速尝试一下 LINQ 的东西。 @Daniel Shillcock 和 Ricardo Serra 提供好的指点。

标签: c#


【解决方案1】:

我的建议是使用 LINQ。请参阅下面的示例:

List<string> stringlist = new List<string> { "RGBI1red", "green", "RGBI1pink", "purple" };
stringlist = stringlist.Select(s => s.Replace("RGBI1", string.Empty)).ToList();

使用您创建的列表,此选择查询将用任何内容替换所有 RGBI1。然后使用.ToList() 将其转换为列表。

查看this question 了解更多信息。

【讨论】:

  • 您不需要为ToList() 方法指定泛型参数 - 它将从源类型推断
【解决方案2】:

使用 LINQ 的答案是:

        var stringlist = new List<string> { "RGBI1red", "green", "RGBI1pink", "purple" };
        stringlist = stringlist.Select(x => x.Replace("RGBI1", "")).ToList();

        stringlist.ForEach(x => Console.WriteLine(x));

-->
   red
   green
   pink
   purple

【讨论】:

    【解决方案3】:

    为什么需要两个循环,当然只有一个?遍历字符串并进行替换。无论如何,任何其他解决方案都会在幕后做到这一点......但它在 LINQ 中: . stringlist.Select(s => s.Replace("RGBI", "");

    【讨论】:

    • 没有必要添加与其他人相同的答案。另外请考虑添加一些代码来显示循环和替换的过程。
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2014-11-11
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多