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 メソッドのドキュメントにあります。それは言う

部分文字列は、指定された start から始まり、インデックス end - 1 の文字まで、またはそのような文字が存在しない場合は StringBuffer の末尾まで拡張されます。

私はこの終わりについてあまり確信が持てません-その引用の1ビット..そして、私が物事を壊した可能性があるかどうか。

乾杯 :)

編集:へー。文字列から最後の 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 に答える