我试图找出一个等效于 C#string.IndexOf(string)
的方法,它可以处理 Unicode 字符中的代理对。
仅比较单个字符时,我能够获得索引,如下面的代码所示:
public static int UnicodeIndexOf(this string input, string find)
{
return input.ToTextElements().ToList().IndexOf(find);
}
public static IEnumerable<string> ToTextElements(this string input)
{
var e = StringInfo.GetTextElementEnumerator(input);
while (e.MoveNext())
{
yield return e.GetTextElement();
}
}
但是,如果我尝试实际使用字符串作为find
变量,那么它将不起作用,因为每个文本元素只包含一个要比较的字符。
关于如何写这篇文章有什么建议吗?
感谢您的任何帮助。
编辑:
下面是一个例子,说明为什么这是必要的:
代码
Console.WriteLine("HolyCowBUBBYYYYY".IndexOf("BUBB"));
Console.WriteLine("HolyCow@BUBBYY@YY@Y".IndexOf("BUBB"));
输出
9
8
请注意我用值更改替换字符的位置。
@