1

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

有没有更好的办法?

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;
}

谢谢

坦率

4

2 回答 2

2

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

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
于 2013-07-18T20:54:08.647 回答
0

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

于 2013-07-18T21:52:24.467 回答