1

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

文字を@値の変更に置き換えた場所に注意してください。

4

1 に答える 1