使用C#从字符串中删除值

时间:2017-06-14 14:02:02

标签: c#

我的aspx.cs页面中有以下字符串。这两个字符串都是动态的

string fromDB = "12,24,25,45,67,78,90"(动态字符串)

我有另一个字符串,其中包含两个或多个值,总是如下所示

string anotherStr = "24,67"

我不知道如何删除" anotherStr"来自" fromDB"

的值

最后我需要"12,25,45,78,90"。我不知道如何使用c#。

6 个答案:

答案 0 :(得分:2)

使用Linq:

string.Join(",", fromDB.Split(',').Except(anotherStr.Split(',')))

答案 1 :(得分:1)

        string fromDB = "12,24,25,45,67,78,90";
        string anotherStr = "24,67";

        var result = fromDB.Split(',').Except(anotherStr.Split(',')).ToList();

        Console.WriteLine(string.Join(",", result));
        Console.ReadLine();

这会将字符串拆分为数组,然后排除fromDB中同时位于anotherStr中的任何条目。

请注意,使用Except意味着将从fromDB中删除任何重复项 - 按https://stackoverflow.com/a/44547153/34092

答案 2 :(得分:1)

将您的(硬)问题分解为多个(简单)问题:

  1. 将逗号分隔的字符串转换为字符串的列表(或数组)(使用例如String.Split)。
  2. 了解如何从第二个列表中删除一个列表中的所有列表条目(例如使用Enumerable.Except)。
  3. 将您的列表转换回逗号分隔的字符串(使用例如String.Join)。
  4. 对于所有这些更简单的问题,可以在SO上找到解决方案。

答案 3 :(得分:0)

您可以执行类似

的操作
HashSet<string> all = new HashSet<string>(fromDB.Split(',')),
                toRemove = new HashSet<string>(anotherStr.Split(','));

foreach(var item in toRemove) {
     all.Remove(item);
}

答案 4 :(得分:0)

我建议使用HashSet<T> Linq

HashSet<string> exclude = new HashSet<string>(anotherStr.Split(','));

string result = string.Join(",", fromDB
  .Split(',')
  .Where(item => !exclude.Contains(item)));

请注意,在Except 保留时,fromDB 会在Where内删除重复项。

答案 5 :(得分:0)

您拆分两个字符串以获得两个数组,使第一个成为List<string>

var fromDbList = fromDb.Split(',').ToList();

var anotherStrArray = anotherStr.Split(',');

你循环第二个数组,并从第一个数组中删除它的值(你不能在String[]上执行,因此之前的ToList()

foreach (var valueToDelete in anotherStrArray)
{
    fromDbList.Remove(valueToDelete);
}

然后加入(现在修改的)第一个数组以获得单个字符串:

var finalString = String.Join(fromDbList, ",");