121

ユーザーが次の形式で文字列を入力するプログラムを作成しています。

"What is the square of 10?"
  1. 文字列に数字があることを確認する必要があります
  2. 番号だけを抽出します。
  3. .contains("\\d+")またはを使用する.contains("[0-9]+")と、入力が何であれ、プログラムは文字列で数値を見つけることができませんが、数値.matches("\\d+")しかない場合にのみ機能します。

見つけて抽出するためのソリューションとして何を使用できますか?

4

16 に答える 16

14

regex よりも速いと思います。

public final boolean containsDigit(String s) {
    boolean containsDigit = false;

    if (s != null && !s.isEmpty()) {
        for (char c : s.toCharArray()) {
            if (containsDigit = Character.isDigit(c)) {
                break;
            }
        }
    }

    return containsDigit;
}
于 2013-09-03T11:31:51.447 に答える
12

s=s.replaceAll("[*a-zA-Z]", "")すべてのアルファベットを置き換えます

s=s.replaceAll("[*0-9]", "") すべての数値を置き換えます

上記の2つの置換を行うと、すべての特殊文字列が取得されます

から整数のみを抽出したい場合String s=s.replaceAll("[^0-9]", "")

からアルファベットのみを抽出したい場合String s=s.replaceAll("[^a-zA-Z]", "")

ハッピーコーディング:)

于 2014-05-24T11:30:32.383 に答える
11

以下のコードは、「Javaで文字列に数字が含まれているかどうかを確認する」には十分です

Pattern p = Pattern.compile("([0-9])");
Matcher m = p.matcher("Here is ur string");

if(m.find()){
    System.out.println("Hello "+m.find());
}
于 2014-03-26T12:14:29.867 に答える
9

私が行った解決策は次のようになります。

Pattern numberPat = Pattern.compile("\\d+");
Matcher matcher1 = numberPat.matcher(line);

Pattern stringPat = Pattern.compile("What is the square of", Pattern.CASE_INSENSITIVE);
Matcher matcher2 = stringPat.matcher(line);

if (matcher1.find() && matcher2.find())
{
    int number = Integer.parseInt(matcher1.group());                    
    pw.println(number + " squared = " + (number * number));
}

完璧なソリューションではないと確信していますが、私のニーズには合っていました。助けてくれてありがとう。:)

于 2013-09-03T11:56:36.837 に答える
8

次のパターンを試してください。

.matches("[a-zA-Z ]*\\d+.*")
于 2013-09-03T11:17:56.810 に答える
2
public String hasNums(String str) {
        char[] nums = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        char[] toChar = new char[str.length()];
        for (int i = 0; i < str.length(); i++) {
            toChar[i] = str.charAt(i);
            for (int j = 0; j < nums.length; j++) {
                if (toChar[i] == nums[j]) { return str; }
            }
        }
        return "None";
    }
于 2016-06-14T19:57:48.970 に答える
1

これを試すことができます

String text = "ddd123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    try {
        double numVal = Double.valueOf(numOnly);
        System.out.println(text +" contains numbers");
    } catch (NumberFormatException e){
        System.out.println(text+" not contains numbers");
    }     
于 2013-09-03T11:22:43.880 に答える