我需要一个从字符串中删除字符列表的方法。我需要正确支持所有角色,但我不确定我是否正确管理代理角色。
还有更好的方法吗?
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;
}
谢谢
谢
答案 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);