public static String removeNonDigits(final String str) {
if (str == null || str.length() == 0) {
return "";
}
return str.replaceAll("/[^0-9]/g", "");
}
これは数字だけを取得して戻ってきますが、期待どおりに実行してはいけません。助言がありますか?すべての非数字を文字列の空の文字に置き換えます。
public static String removeNonDigits(final String str) {
if (str == null || str.length() == 0) {
return "";
}
return str.replaceAll("/[^0-9]/g", "");
}
これは数字だけを取得して戻ってきますが、期待どおりに実行してはいけません。助言がありますか?すべての非数字を文字列の空の文字に置き換えます。
のJavaは、Perlではありません:)このお試しください"[^0-9]+"
LOL ..ありがとう.. :) –
@whyoz:新しい質問をしてください –
@whyoz:誰もコメントで答えを見つけるつもりはありません。 –
をお試しください:これは何をしたいん
public static String removeNonDigits(final String str) {
if (str == null || str.length() == 0) {
return "";
}
return str.replaceAll("\\D+", "");
}
"\\ D +" –
スラッシュ(Javaのために正規表現ではない)をエスケープする必要があります:\\固定\\ –
ありがとうございます.. :) –
public String replaceNonDigits(final String string) {
if (string == null || string.length() == 0) {
return "";
}
return string.replaceAll("[^0-9]+", "");
}
を。
文字列の上に小さなループを置くだけで、この特定のケースをお勧めします。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch =='0' || ch == '1' || ch == '2' ...) {
sb.add(ch);
}
}
return sb.toString();
Character.isDigit(...)は、 '(ch ==' 0 '|| ch ==' 1 '|| ch ==' 2 '....)'よりも優れたオプションです。 –
enumValue
が入力文字列である場合、次のように使用してください。
enumValue.replaceAll("[^0-9]","")
これは文字列を取り、すべての非数字桁を ""で置き換えます。
例:入力が_126576で、出力は126576.
は、この情報がお役に立てば幸いです。
String.replaceAllメソッドを見ると、Pattern.compile(regex).matcher(this).replaceAll(replacement)が実行されていることがわかります。これは多くの場合、非効率的です。より良い方法は、コンパイルされたパターンを定数に抽出することです。 – kfox