我有一个字符串,想要提取其中唯一的数字序列。
例如: helloThisIsA1234Sample. 我想要的是 1234
可以确定数字序列在字符串中只出现一次,但位置不同。
(对于那些会问的人,我有一个服务器名称,需要从中提取特定的数字)
我想使用Apache commomns中的StringUtils类。
谢谢!
我有一个字符串,想要提取其中唯一的数字序列。
例如: helloThisIsA1234Sample. 我想要的是 1234
可以确定数字序列在字符串中只出现一次,但位置不同。
(对于那些会问的人,我有一个服务器名称,需要从中提取特定的数字)
我想使用Apache commomns中的StringUtils类。
谢谢!
使用这段代码,numberOnly 将包含您想要的输出。
String str="sdfvsdf68fsdfsf8999fsdf09";
String numberOnly= str.replaceAll("[^0-9]", "");
我总是喜欢使用Guava 字符串工具或类似的工具来处理这类问题:
String theDigits = CharMatcher.inRange('0', '9').retainFrom("abc12 3def"); // 123
CharMather.digit()
也已被弃用。我使用CharMatcher.inRange('0', '9').retainFrom("xx123xx");
。 - lamyarus只有一行:
int value = Integer.parseInt(string.replaceAll("[^0-9]", ""));
你还可以使用java.util.Scanner
:
new Scanner(str).useDelimiter("[^\\d]+").nextInt()
你可以使用next()
代替nextInt()
,将数字作为String
获取。注意,在结果上调用Integer.parseInt
可能比调用nextInt()
快多次。
您可以使用Scanner
上的hasNextInt()
检查数字是否存在。
使用正则表达式,例如[^0-9]
,可以删除所有非数字字符。
然后,只需使用Integer.parseInt(String);
即可。
尝试这个:
String s = "helloThisIsA1234Sample";
s = s.replaceAll("\\D+","");
Guava的CharMatcher
类可以从String
中提取Integer
。
String text="Hello1010";
System.out.println(CharMatcher.digit().retainFrom(text));
产生:
1010
扩展找到浮点数的最佳答案
String str="2.53GHz";
String decimal_values= str.replaceAll("[^0-9\\.]", "");
System.out.println(decimal_values);
如果您可以访问org.apache.commons.lang3,您可以使用StringUtils.getDigits方法。
public static void main(String[] args) {
String value = "helloThisIsA1234Sample";
System.out.println(StringUtils.getDigits(value));
}
output: 12345
我已经为同一个问题创建了一个JUnit测试类(作为额外的知识/信息)。希望这对你有帮助。
public class StringHelper {
//Separate words from String which has gigits
public String drawDigitsFromString(String strValue){
String str = strValue.trim();
String digits="";
for (int i = 0; i < str.length(); i++) {
char chrs = str.charAt(i);
if (Character.isDigit(chrs))
digits = digits+chrs;
}
return digits;
}
}
一个JUnit测试案例如下:
public class StringHelperTest {
StringHelper helper;
@Before
public void before(){
helper = new StringHelper();
}
@Test
public void testDrawDigitsFromString(){
assertEquals("187111", helper.drawDigitsFromString("TCS187TCS111"));
}
}
String
本身完成时,你就不需要来自Apache的StringUtils
。 - Rahul