我正在将Java代码转换为C#。 Java中的StringBuilder类似乎有比C#更多的方法。我对(比如说)Java功能感兴趣
sb.indexOf(s);
sb.charAt(i);
sb.deleteCharAt(i);
似乎在C#中缺失。
我认为前两个可以通过
建模sb.ToString().IndexOf(s);
sb.ToString().CharAt(i);
但第三个是否会对某个内容的副本而不是实际内容进行操作?
是否有一种将此功能添加到所有缺失方法的常用方法?
答案 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]
简单地访问单个字符