2011-08-24 6 views
2

私は、次のいずれかのような文字列がある場合:「AlphaSuffix」から「Alpha」を取得するためにJavaで最も簡潔な方法は何ですか?

AlphaSuffix 
BravoSuffix 
CharlieSuffix 
DeltaSuffix 

BravoBravoSuffixAlphaAlphaSuffixを変換するための最も簡潔なJava構文がどのようなものですか?

+0

可能なのは固定リストか、2番目の大文字までですか? – rossum

+0

@Coggle質問に答えましたか?承認された解決策をマークしていませんでした(緑色のチェック)。 –

答えて

4

String given = "AlphaSuffix" 
String result = given.substring(0, given.length()-"Suffix".length()); 

さらに簡潔にするには、ユーティリティメソッドを作成します。ユーティリティメソッドで

public static String chop(String value, String suffix){ 
    if(value.endsWith(suffix)){ 
     return value.substring(0, value.length() - suffix.length()); 
    } 
    return value; 
} 

、私はサフィックスがvalueの終わりに実際にあるかどうかを確認するためのチェックを追加しました。


テスト:

String[] sufs = new String[] { 
    "AlphaSuffix", 
    "BravoSuffix", 
    "CharlieSuffix", 
    "DeltaSuffix" 
}; 
for (int i = 0; i < sufs.length; i++) { 
    String s = chop(sufs[i], "Suffix"); 
    System.out.println(s); 
} 

を与える:

Alpha 
Bravo 
Charlie 
Delta 
+0

私はこの作業を見ることができません。あなたが行っていないインデックスを見つけるために逆方向にスキャンしない限り、接頭辞のサイズはわかりません。 –

+0

probs :)私はあなたがやっているのとほとんど同じことを含む解決策を持っていましたが、indexOfを使用しました。これは欠陥があることに気付きました。 Ack :) –

4

は接尾辞を削除するには、単純な正規表現を使用します。

String myString = "AlphaSuffix"; 
String newString = myString.replaceFirst("Suffix$", ""); 
+0

これは素晴らしい解決策だと思います! – Stefano

0

サフィックスは、すべての未知の/異なる場合のことができます。

を使用
myString.replaceFirst("^(Alpha|Bravo|Charlie|Delta|...).*", "$1"); 
関連する問題