我的aspx.cs页面中有以下字符串。这两个字符串都是动态的
string fromDB = "12,24,25,45,67,78,90"
(动态字符串)
我有另一个字符串,其中包含两个或多个值,总是如下所示
string anotherStr = "24,67"
我不知道如何删除" anotherStr"来自" fromDB"
的值最后我需要"12,25,45,78,90"
。我不知道如何使用c#。
答案 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)
将您的(硬)问题分解为多个(简单)问题:
String.Split
)。Enumerable.Except
)。String.Join
)。对于所有这些更简单的问题,可以在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, ",");