次のコードを使用して、文字列配列内にある 9s や 4c などの文字列値を取得し、最初の文字の整数値だけを見つけます。また、10 や 13c のような複数の数字を含む文字列値にもこれを使用できるようにしたいと考えています。
total = total + Integer.parseInt(a[i].substring(0)) + 1;
これにより、数値形式の例外が発生します。私が間違っているかもしれないアイデアはありますか?
次のコードを使用して、文字列配列内にある 9s や 4c などの文字列値を取得し、最初の文字の整数値だけを見つけます。また、10 や 13c のような複数の数字を含む文字列値にもこれを使用できるようにしたいと考えています。
total = total + Integer.parseInt(a[i].substring(0)) + 1;
これにより、数値形式の例外が発生します。私が間違っているかもしれないアイデアはありますか?
これはうまくいきます
public static void getIntVal() {
String text = "123cc";
String numOnly = text.replaceAll("\\D+", "");
int numVal = Integer.valueOf(numOnly);
System.out.println(numVal);
}
ダブルとして使用したい場合は、次のようにできます
String text = "123.0114cc";
String numOnly = text.replaceAll("\\p{Alpha}","");
double numVal = Double.valueOf(numOnly);
System.out.println(numVal);
str.substring(0)
str
再びです(ドキュメントを読んでください)。あなたはおそらく探している
a[i].substring(0, a[i].length() - 1) // cuts off last character
Ruchira のソリューションでは、数字以外の文字を削除することが規定されています。あなたの設定では正しいようです。ただし、数値が浮動小数点数または倍精度浮動小数点数である場合、彼女の解決策は無効ですshreyansh jogi
。
ルチラの思考ソリューションを適切に実装すると、これで問題が解決します...
String text = "123.0121cc";
String numOnly = text.replaceAll("\\p{Alpha}", "");
何を期待すべきかわかっている場合は、次のように言いますdouble
。 double numVal = Double.valueOf(numOnly); System.out.println(numVal);
integer
それ以外の場合..テキストの残りの部分がまたはであるかどうかがわからない場合は、次のdouble
ことが役立ちます。
if(numOnly.contains(".")) {
double numVal = Double.valueOf(numOnly);
System.out.println(numVal);
} else {
int numVal = Integer.valueOf(numOnly);
System.out.println(numVal);
}
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));