4

JavaコードをC#に変換しています。JavaのStringBuilderクラスには、C#のものよりもはるかに多くのメソッドがあるようです。私は(たとえば)Java機能に興味があります

sb.indexOf(s);
sb.charAt(i);
sb.deleteCharAt(i);

これはC#にはないようです。

最初の2つは次のようにモデル化できると思います

sb.ToString().IndexOf(s);
sb.ToString().CharAt(i);

しかし、3番目は実際のコンテンツではなくsbのコンテンツのコピーを操作しますか?

不足しているすべてのメソッドにこの機能を追加する一般的な方法はありますか?

4

4 に答える 4

6

.charAtのCharsメンバーコレクションを使用できます。同様に、.Remove(i、1)を使用して、位置iの単一の文字を削除できます。

于 2009-10-10T16:00:48.860 に答える
2

3番目の場合、 Removeメソッドを使用できます。

sb.Remove(i, 1);
于 2009-10-10T15:58:11.203 に答える
1

次のような拡張メソッドを使用できます。

    static class Extensions
    {
        public static int IndexOf(this StringBuilder sb, string value)
        {
            return sb.ToString().IndexOf(value);
        }

//if you must use CharAt instead of indexer
        public static int CharAt(this StringBuilder sb, int index)
        {
            return sb[index];
        }
    }
于 2009-10-10T16:02:08.233 に答える
0

StringBuilderにはインデクサーがあります。つまり、sb[i]を使用して単一の文字に簡単にアクセスできます。

于 2009-10-10T22:16:15.697 に答える