C#检查字符串A中的任何字母是否包含字符串B.

时间:2016-09-06 15:23:45

标签: c#

我有一个带有文字“HELLO”的字符串(String1)。

现在我想检查String2是否有任何String1字母。 如果是,我想删除String2中的那个字母。我怎么能这样做?

4 个答案:

答案 0 :(得分:14)

尝试使用 Linq ;检查typescript 2.0中是否有firstString的任何字符:

secondString

bool result = firstString.Intersect(secondString).Any();

中删除firstString个字符
secondString

修改 string result = string.Concat(secondString.Except(firstString)); 副作用:它会从Except中删除重复同样,请参阅下面的Ivan Stoev的评论。保留重复项

secondString

答案 1 :(得分:0)

自我解释:

        string a = "HELLO";
        string b = "GOODBYE";
        foreach (char c in a.ToCharArray())
        {
            if (b.Contains(c)) { b = b.Replace(c.ToString(), string.Empty); }
        }

输出:b =" GDBY"

答案 2 :(得分:0)

创建助手,如下所示:

IEnumerable<Tuple<char, int>> IndexDistinct(IEnumerable<char> source)
{
    var D = new Dictionary<char, int>();
    foreach (var c in source)
    {
        D[c] = D.ContainsKey(c) ? (D[c] + 1) : 0;
        yield return Tuple.Create(c, D[c]);
    }
}

现在在类似函数中调用helper方法:

string removeMatch(string str1, string str2)
{
    return new string(
        IndexDistinct(str1)
            .Except(IndexDistinct(str2))
            .Select(x => x.Item1)
            .ToArray());
}

答案 3 :(得分:0)

这可能是最短的方式

var str1 = "Hello World";
var str2 = "Hello Word Again";

var result = string.Joing("", str2.Except(str1));

Console.WriteLine(result); //Again