如何检查string1中string2的重复字符然后将其删除?

时间:2011-10-09 17:25:44

标签: c#

e.g String1 = "Hello";
e.g String2 = "eo";

我想删除string1中string2中的所有字符。
所以输出应该是"Hll"

6 个答案:

答案 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 + "]", "");