查找字符串格式的数字中的字符

时间:2013-05-04 10:11:03

标签: java regex string

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

一个简单的例子如下

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

    }

如果我想要返回该值以外的任何其他内容。

如何从这枚戒指中获得第一个角色?

6 个答案:

答案 0 :(得分:1)

试试这个:

String result = sample.replaceAll("\\d" ,"");
return result;

答案 1 :(得分:1)

private char check() {
    String sample ="1212kkk";//121hhh444 | 12-22
    return sample.replaceAll("[0-9]+", "").charAt(0);

}

答案 2 :(得分: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) {
    ...
}

答案 3 :(得分:0)

我出错了吗?如果将某些内容保存为int(数字),则不能在其中包含字符串值。但是,如果您有一个字符串,并且在其字符串编号中,并且只想获取数字,那么此regex命令将获得所有数字

/(\d+)/

答案 4 :(得分:0)

尝试使用guava

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

答案 5 :(得分:0)

\ D是非数字,因此\ D *是一行中的任意数量的非数字。所以你的整个字符串应该匹配\ D *。

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

请尝试使用\\D*\D*