2

这里真的很简单的问题(更多地证实我的想法,而不是任何事情)......

Java方法:StringBuffer.Delete(start,end)

Java代码:

sb.delete(sb.length()-2, sb.length());  

C#(不确定这是否正确):

StringBuilder sb = new StringBuilder();
....
sb.Remove(sb.Length - 2, sb.Length - (sb.Length - 2));

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

子字符串从指定的开头开始并延伸到索引 end - 1 处的字符,如果不存在这样的字符,则延伸到 StringBuffer 的末尾

我只是不太确定这个结局——那句话的一点点……如果我可能把事情搞砸了。

干杯:)

编辑:呵呵。我知道它正在从字符串中删除最后 2 个字符,但我保持转换准确,因此我的代码很冗长。:)

4

3 回答 3

2

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

sb.Remove(sb.Length - 2, 2);
于 2009-02-22T02:17:21.957 回答
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;
于 2009-02-22T02:21:27.797 回答
0

在 Java 的 delete 调用中,它从 start 到 end-1 删除字符。无论您指定多久,C# 调用都会从开头删除一个字符串。

于 2009-02-22T02:20:33.523 回答