如何在数字中找到字符串?
一个简单的例子如下
private char check() {
String sample ="1212kkk";//121hhh444 | 12-22
return 'k';//'h' | '-'
}
如果我想要返回该值以外的任何其他内容。
如何从这枚戒指中获得第一个角色?
答案 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
像这样的东西: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*
。