如何在数字中找到字符串?
一个简单的例子如下
private char check() {
String sample ="1212kkk";//121hhh444 | 12-22
return 'k';//'h' | '-'
}
如果不是数字,我想返回该值。
我怎样才能从这个戒指中获得第一个字符?
尝试这个:
String result = sample.replaceAll("\\d" ,"");
return result;
您需要更改方法的签名,否则调用者将无法判断字符串何时为“好”(即仅包含数字)。一种方法是返回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) {
...
}
private char check() {
String sample ="1212kkk";//121hhh444 | 12-22
return sample.replaceAll("[0-9]+", "").charAt(0);
}
我有什么问题吗?如果您将某些内容另存为 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*
。