この基本的な Java メソッドに相当する C# メソッドは何ですか?

StackOverflow https://stackoverflow.com/questions/574171

  •  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# 呼び出しでは、指定した期間に応じて文字列が先頭から削除されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top