数値内の文字列を見つけるにはどうすればよいですか?
簡単な例は次のとおりです
private char check() {
String sample ="1212kkk";//121hhh444 | 12-22
return 'k';//'h' | '-'
}
数値以外の場合は、その値を返したいと思います。
このリングから最初のキャラクターを取得するにはどうすればよいですか?
メソッドの署名を変更する必要があります。そうしないと、呼び出し元は、文字列が「適切」である (つまり、数字のみを含む) かどうかを判断できなくなります。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) {
...
}
これを試して:
String result = sample.replaceAll("\\d" ,"");
return result;
私は何か間違っていますか?何かを int(number) として保存すると、そこに文字列値を入れることはできません。ただし、文字列があり、その文字列に数字があり、数字のみを取得したい場合、この正規表現コマンドはすべての数字を取得します
/(\d+)/
グアバで試す
何かのようなもの:
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
\D は非数字であるため、\D* は行内の任意の数の非数字です。したがって、文字列全体が \D* と一致する必要があります。
Matcher m = Pattern.compile("\\D*").matcher(sample);
while (m.find()) {
System.err.println(m.group());
}
試してみて\\D*
ください\D*
。