Java和C#中StringBuilder的区别

4

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

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

这似乎是C#中缺失的。

我想前两个可以被建模为

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

第三个功能是否会在操作sb的内容副本而不是实际内容时执行?

是否有一种常见的方法可以为所有缺失的方法添加此功能?

4个回答

6
你可以使用Chars成员集合来调用.charAt方法。同样,你可以使用.Remove(i,1)在位置i上删除一个字符。

@Joe,请问Chars在哪里?能否给个示例?(我查看了http://msdn.microsoft.com/en-us/library/2839d5h5%28VS.71%29.aspx,但没有找到任何内容) - peter.murray.rust
这是一个属性。在C#中,它通过索引器实现(例如 mySb[idx])。 - Joe

2

第三种方法可以使用Remove方法:

sb.Remove(i, 1);

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];
        }
    }

@Yuriy 我来自Java,所以自然会首先寻找相同的方法。感谢您指出索引器。 - peter.murray.rust

0

StringBuilder有一个索引器,这意味着您可以使用sb [i]轻松访问单个字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接