I am converting Java code to C#. The StringBui开发者_Python百科lder class in Java seems to have many more methods than the C# one. I am interested in (say) the Java functionality
sb.indexOf(s);
sb.charAt(i);
sb.deleteCharAt(i);
which seems to be missing in C#.
I suppose the first two could be modelled by
sb.ToString().IndexOf(s);
sb.ToString().CharAt(i);
but would the third operate on a copy of the contents of the sb rather than the actual contents?
Is there a common way of adding this functionality to all missing methods?
You can use the Chars member collection for .charAt. Similarly, you can use .Remove(i,1) to remove a single char at position i.
For the third you could use the Remove method:
sb.Remove(i, 1);
You could use extension methods like the following:
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];
}
}
StringBuilder has an indexer, that means you can simply access single characters using sb[i]
精彩评论