从C#中的字符串中删除字符列表

时间:2013-07-18 18:33:05

标签: c# string char

我需要一个从字符串中删除字符列表的方法。我需要正确支持所有角色,但我不确定我是否正确管理代理角色。

还有更好的方法吗?

public static string Remove(string source, char[] oldChar)
{
    if (string.IsNullOrEmpty(source) || oldChar == null || oldChar.Length == 0)
        return source;

    for (int i = source.IndexOfAny(oldChar, 0); i != -1; i = source.IndexOfAny(oldChar, i))
        source = source.Remove(i, char.IsSurrogatePair(source, i) ? 2 : 1);

    return source;
}

谢谢

2 个答案:

答案 0 :(得分:1)

以下内容并不涉及代理人对,因为从问题中你不清楚你想做什么。如果满足从字符串中删除字符列表的要求

public static string Remove(string source, char[] oldChar)
{
    return String.Join("", source.ToCharArray().Where(a => !oldChar.Contains(a)).ToArray());
}

示例:

var s = "hello world";
var c = new[] { 'l', 'o' };
Remove(s, c); //returns: he wrd

答案 1 :(得分:0)

如果您的目标是删除代理人,我建议使用以下方法:Char.ConvertFromUtf32(int utf32);