3

我有 String xxxxy 1/1/2,我需要使用 java 从字符串中找出第一次出现 Integer 的索引。输出将是第一个“1”索引。我需要正则表达式。

4

5 回答 5

5

您不使用正则表达式,但如果您必须使用它:

    String s = "xxxxy 1/1/2";
    Pattern pattern = Pattern.compile("^\\D*(\\d)");
    Matcher matcher = pattern.matcher(s);
    matcher.find();
    System.out.println(matcher.start(1));

输出:6

于 2013-09-03T09:15:13.910 回答
5

无需使用正则表达式。将您的 String 转换为 char 数组,在其上循环并使用Character#isDigit()

于 2013-09-03T09:06:43.487 回答
2
int pos = s.replaceFirst("^(\\D+).*$", "$1").length();

保留非数字\\D

于 2013-09-03T09:15:47.683 回答
0

您可以使用此函数从字符串中获取索引:

function GetIndex (strValue) {
var notDigRegExp = /^\D+/; 
var digRegExp = /^\d+/;
strValue = strValue.replace(notDigRegExp, "");
var matches = strValue.match(digRegExp);
return matches[0];
};  
于 2013-09-03T09:46:20.453 回答
0

您也可以在此代码中省略使用正则表达式,尽管它比干净有效的解决方案更有趣。

for(String b : "abc123cde".split("[a-z]")) {        
    try {
        Integer result = Integer.parseInt(b);
        if(result != null) {
            System.out.println(result);
            break;
        }
    } catch(NumberFormatException ex) {
         //nevermind
    }
}
于 2013-09-03T09:22:19.250 回答