0

如何在数字中找到字符串?

一个简单的例子如下

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

    }

如果不是数字,我想返回该值。

我怎样才能从这个戒指中获得第一个字符?

4

6 回答 6

1

尝试这个:

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

您需要更改方法的签名,否则调用者将无法判断字符串何时为“好”(即仅包含数字)。一种方法是返回Character,一个围绕char原语的包装器。

在内部,您可以使用简单的正则表达式[^0-9]来匹配 a 中的第一个非数字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
private char check() {
    String sample ="1212kkk";//121hhh444 | 12-22
    return sample.replaceAll("[0-9]+", "").charAt(0);

}
于 2013-05-04T10:17:06.953 回答
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 回答