0

数値内の文字列を見つけるにはどうすればよいですか?

簡単な例は次のとおりです

private char check() {
        String sample ="1212kkk";//121hhh444 | 12-22
        return 'k';//'h' | '-'

    }

数値以外の場合は、その値を返したいと思います。

このリングから最初のキャラクターを取得するにはどうすればよいですか?

4

6 に答える 6

1

メソッドの署名を変更する必要があります。そうしないと、呼び出し元は、文字列が「適切」である (つまり、数字のみを含む) かどうかを判断できなくなります。1 つの方法は、プリミティブCharacterのラッパーである を返すことです。char

内部では、単純な正規表現を使用して[^0-9]、 の最初の非数字と一致させることができますString。一致しない場合は、 を返しnullます。このようにして、呼び出し元は次のようにメソッドを呼び出すことができます。

private static Character check(String s) {
    Pattern firstNonDigit = Pattern.compile("[^0-9]");
    Matcher m = firstNonDigit.matcher(s);
    if (m.find()) {
        return m.group().charAt(0); // The group will always be 1 char
    }
    return null; // Only digits or no characters at all
}
...
Character wrongChar = check("12-34");
if (wrongChar != null) {
    ...
}
于 2013-05-04T10:18:38.737 に答える
1

これを試して:

String result = sample.replaceAll("\\d" ,"");
return result;
于 2013-05-04T10:12:25.560 に答える
0

私は何か間違っていますか?何かを int(number) として保存すると、そこに文字列値を入れることはできません。ただし、文字列があり、その文字列に数字があり、数字のみを取得したい場合、この正規表現コマンドはすべての数字を取得します

/(\d+)/
于 2013-05-04T10:14:30.137 に答える
0

グアバで試す

CharMatcher.indexIn

何かのようなもの: if(CharMatcher.JAVA_LETTER.indexIn(yourString) != -1) return yourString.charAt(CharMatcher.JAVA_LETTER.indexIn(yourString));

public static void main(String[] args) {
    String yourString = "123abc";
    int indexOfLetter = CharMatcher.JAVA_LETTER.indexIn(yourString);
    if (indexOfLetter != -1) {
        char charAt = yourString.charAt(indexOfLetter);
        System.out.println(charAt);
    }
}

版画a

于 2013-05-04T10:14:32.317 に答える
0

\D は非数字であるため、\D* は行内の任意の数の非数字です。したがって、文字列全体が \D* と一致する必要があります。

    Matcher m = Pattern.compile("\\D*").matcher(sample);
    while (m.find()) {
        System.err.println(m.group());
    }

試してみて\\D*ください\D*

于 2013-05-04T10:15:41.987 に答える