2012-02-08 22 views
-4

stringの最後の2文字目を削除する簡潔な方法はありますか?文字列の最後の2文字目を削除するにはどうすればよいですか?

"abcde"は "abce"になります

文字列が十分に長いことを確認する必要はありません。

+2

"良い"をどのように定義していますか?最高のパフォーマンス?コードの行はほとんどありませんか?簡単に理解できますか? – Pops

+0

これは実際にスタックオーバーフローの仕組みではありません...ここでは具体性を追求しています。 – Pops

答えて

6
return new StringBuilder(str) 
    .deleteCharAt(str.length() - 2) 
    .toString(); 

=最後の2番目の位置を取得します。

+0

クール、私はそれが好き! – ycomp

2

最後の2文字を除くすべての文字を取り、最後の文字を連結して連結します。文字列が少なくとも2文字であると仮定すると、コードは簡単です。 Hint

1
String test = "abcde"; 
StringBuilder sb = new StringBuilder(test); 
sb.deleteCharAt(test.length()-2); 
String newString = sb.toString(); 

警告:これは手前の長さではテストされませんが、これはあなたが求めたものです。もちろん

+1

このアプローチをとるならば、少なくとも 'StringBuilder'を使うべきです。 – Pops

+1

-1ループ内の文字列を連結します。 StringBuilderを使用します。 –

+1

@LordTorgamusありがとう、実際にはString Builderについてよく知らないのですか? – Alex

2
String input = "abcde"; 
int length = input.size(); 
String result = input.substring(0, length - 2) + input.substring(length, length); 
1
String a = "abcde"; 
a = a.substring(0, a.length() - 2) + a.substring(a.length() - 1); 
2
public String getAllButSecondLast(final String input) 
{ 
    return input.substring(0, input.length() - 2) + input.charAt(input.length() - 1); 

} 

これがnullチェックや長さのチェックを(少なくとも2つの文字でなければなりません)提供されていません。

1

は、私は、これはそれを得るだろうと同じくらい、高速でコンパクト、かつ理解しやすいと思われるstr.length - 2;

public static String removeCharAt(String s, int pos) { 
     StringBuffer buf = new StringBuffer(s.length() - 1); 
     buf.append(s.substring(0,pos)).append(s.substring(pos+1)); 
     return buf.toString(); 
} 

http://www.rgagnon.com/javadetails/java-0030.html

0
"abcde".replaceAll ("(.*).(.)", "$1$2") 

これは、文字列2($ 2)として覚えておくの文字を終了し、正規表現、我々は後でとして$ 1を参照したいいくつかの文字を検索し、プラス忘れて一つの文字、および別のものを使用しています。

関連する問題