这种基本Java方法的等效C#方法是什么?

时间:2009-02-22 02:12:07

标签: c# java stringbuffer

这里真的很简单(更多的是确认我的想法,而不是任何事情)......

Java方法:[StringBuffer.Delete] 1;

[1]:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html#delete(int,int)

Java Code: sb.delete(sb.length()-2, sb.length());  

C# (not sure if this is right):  
StringBuilder sb = new StringBuilder();
....
sb.Remove(sb.Length - 2, sb.Length - (sb.Length - 2));

我不确定的原因是在java delete方法的文档中。它说

  

子字符串从指定的开始   开始并延伸到角色   index end - 1或结尾   StringBuffer如果没有这样的字符   存在

我对这个 end - 1 这个引言并不太确定......如果我可能已经搞砸了。

欢呼:)

编辑:嘿。我知道它正在删除字符串中的最后2个字符,但我确保转换完全正确,请查看我的详细代码。 :)

3 个答案:

答案 0 :(得分:2)

要删除您要写的最后2个字符:

sb.Remove(sb.Length - 2, 2);

答案 1 :(得分:1)

是的,这是正确的。 “end-1”表示如果调用delete(2,8),则删除索引为2到7的字符,但不删除索引为8的字符。

所以,你的代码是正确的。然而,一些数学技能在这里会派上用场,你会看到:

x - (x - 2)
= x - x + 2
= (x - x) + 2
= 0 + 2
= 2

制作代码:

sb.Remove(sb.Length - 2, 2);

另一种做同样事情的方法是:

sb.Length -= 2;

答案 2 :(得分:0)

在Java中的删除调用中,它从开始到结束1删除字符。无论您指定多长时间,C#调用都会从start中删除一个字符串。