Java中的StringBuilder和C#之间的差异

时间:2009-10-10 15:54:52

标签: c# java stringbuilder

我正在将Java代码转换为C#。 Java中的StringBuilder类似乎有比C#更多的方法。我对(比如说)Java功能感兴趣

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

似乎在C#中缺失。

我认为前两个可以通过

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

但第三个是否会对某个内容的副本而不是实际内容进行操作?

是否有一种将此功能添加到所有缺失方法的常用方法?

4 个答案:

答案 0 :(得分:6)

您可以使用.charAt的Chars成员集合。同样,您可以使用.Remove(i,1)删除位置i处的单个字符。

答案 1 :(得分:2)

对于第三种方法,您可以使用Remove方法:

sb.Remove(i, 1);

答案 2 :(得分: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];
        }
    }

答案 3 :(得分:0)

StringBuilder有一个索引器,这意味着你可以使用sb [i]

简单地访问单个字符