e.g String1 = "Hello";
e.g String2 = "eo";
我想删除string1中string2中的所有字符。
所以输出应该是"Hll"
答案 0 :(得分:3)
不是最有效但非常易读的解决方案:
string input = "hello";
string dupes = "eo";
var output = new string((from c in input where !dupes.Contains(c) select c).ToArray());
对于大型字符串,更有效的方法是使用Hashset<char>
进行欺骗:
string input = "hello";
string dupes = "eo";
HashSet<char> dupeSet = new HashSet<char>();
foreach (char c in dupes)
dupeSet.Add(c);
var output = new string(input.Where(c => !dupeSet.Contains(c)).ToArray());
答案 1 :(得分:1)
如果我理解正确,你可以使用LINQ这样做:
new string(string1.Where(c => !string2.Contains(c)).ToArray())
对于您的示例,这会返回"Hll"
。
如果您希望收集string1
中不在string2
内的所有字符的集合,那就更简单了:
string1.Except(string2)
答案 2 :(得分:0)
经典方法(没有LINQ)是:
string String1 = "Hello", String2 = "eo";
for (int i = 0; i < String2.Length; i++)
{
String1 = String1.Replace(String[i] + "", ""); // replace them with empty string
}
结果是:
String1 = "Hll"
答案 3 :(得分:0)
string1 = new string(string1.Where(x => !string2.Contains(x)).ToArray());
结果:
string1 = "Hll"
答案 4 :(得分:0)
String result = String.Join("", String1.Split(String2.ToCharArray()));
它可能效率不高,但它是小字符串的解决方案。
答案 5 :(得分:-2)
string string1 = "hello";
string string2 = "eo";
string1 = Regex.Replace(string1, "[" + string2 + "]", "");