この基本的な Java メソッドに相当する C# メソッドは何ですか?
-
05-09-2019 - |
質問
ここで本当に単純な質問です(何よりも私の考えを確認するためです)...
Java メソッド:[文字列バッファ.削除]1;
[1]: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html#delete(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 メソッドのドキュメントにあります。それは言う
サブストリングは指定されたスタートから始まり、インデックスエンドの文字(1またはそのような文字が存在しない場合はstringbufferの端まで)まで拡張します
これについてはよくわかりません 終わり - 1 その引用の一部..そして、もし私が物事をめちゃくちゃにしていたら。
乾杯 :)
編集:へー。文字列から最後の 2 文字が削除されていることはわかっていましたが、変換は正確に保たれていたため、冗長なコードになりました。:)
解決
最後の 2 文字を削除するには、次のように記述します。
sb.Remove(sb.Length - 2, 2);
他のヒント
はい、その通りです。「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;
Java の削除呼び出しでは、先頭から末尾 1 までの文字が削除されます。代わりに、C# 呼び出しでは、指定した期間に応じて文字列が先頭から削除されます。
所属していません StackOverflow