我试图找出一个等效的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("HolyCow?BUBBYY?YY?Y".IndexOf("BUBB"));
Console.WriteLine("HolyCow@BUBBYY@YY@Y".IndexOf("BUBB"));
输出
9
8
请注意,我在哪里?用@值更改替换了字符。
蝴蝶刀刀
相关分类