取り急ぎ、以下のコードで末尾の数値のみを取得できます。
public static void main(String[] args) {
String str = "1おはようございます123";
// 末尾が数字か判定(必ず数値ならばいらない処理です)
if (isNumMatch(str.substring(str.length()-1))==false) {
System.out.println( "末尾に数値はありませんでした。" );
return;
}
// 文字列を区切り文字とした配列にします
String[] strs = str.split("[^0-9]");
if ( strs.length == 0 ) {
System.out.println( "数値はありませんでした。" );
return;
}
// 配列の最後の数値を取得します。
System.out.println( strs[strs.length-1] );
// 123
}
/**
* 文字列が数値かどうか判定
* @param c
* @return
*/
static boolean isNumMatch(String c) {
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^[0-9]*$");
java.util.regex.Matcher matcher = pattern.matcher(c);
return matcher.matches();
}
マイナス、小数点などは考慮されておりません。
また、正規表現一発で取ってこれるような気がするので、だれかもっと良い回答があればお願いします。