string.IndexOf(string)
Unicode 文字のサロゲート ペアを処理できるC# に相当するものを見つけようとしています。
以下のコードのように、単一の文字のみを比較するときにインデックスを取得できます。
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
文字を
@
値の変更に置き換えた場所に注意してください。