从string提取数字 – StringUtils Java

我有一个string,我想提取(只)序列的string中的数字。

示例:helloThisIsA1234Sample。 我想要1234

这是一个给定的数字序列将只出现一次在string中,但不是在同一个位置。

(对于那些会问,我有一个服务器的名称,需要提取一个特定的数字)

我想使用Apache公社的StringUtils类。

谢谢!

使用这个代码编号只会包含你想要的输出。

  String str="sdfvsdf68fsdfsf8999fsdf09"; String numberOnly= str.replaceAll("[^0-9]", ""); 

我总是喜欢使用Guava String utils或类似的问题:

 String theDigits = CharMatcher.DIGIT.retainFrom("abc12 3def"); // 123 

只有一行:

 int value = Integer.parseInt(string.replaceAll("[^0-9]", "")); 

使用正则expression式(如[^0-9]删除所有非数字。

从那里,只需使用Integer.parseInt(String);

你也可以使用java.util.Scanner

new Scanner(str).useDelimiter("[^\\d]+").nextInt()

您可以使用next()而不是nextInt()来获取数字作为string。

您可以使用Scanner上的hasNextInt()检查号码的存在。

尝试这个 :

 String s = "helloThisIsA1234Sample"; s = s.replaceAll("\\D+",""); 

这意味着:用空stringreplace所有出现的数字字符(0-9)!

我为同一个问题创build了一个JUnit Test类(作为额外的知识/信息)。 希望你会发现这有帮助。

  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; } } 

而JUnittesting用例是:

  public class StringHelperTest { StringHelper helper; @Before public void before(){ helper = new StringHelper(); } @Test public void testDrawDigitsFromString(){ assertEquals("187111", helper.drawDigitsFromString("TCS187TCS111")); } } 

您可以使用以下正则expression式。

 string.split(/ /)[0].replace(/[^\d]/g, '') 

你可以使用str = str.replaceAll("\\D+","");

如果你有符号,你只需要数字就试试这个方法:

  String s = "@##9823l;Azad9927##$)(^738#"; System.out.println(s=s.replaceAll("[^0-9]", "")); StringTokenizer tok = new StringTokenizer(s,"`~!@#$%^&*()-_+=\\.,><?"); String s1 = ""; while(tok.hasMoreTokens()){ s1+= tok.nextToken(); } System.out.println(s1); 
  String line = "This order was32354 placed for QT ! OK?"; String regex = "[^\\d]+"; String[] str = line.split(regex); System.out.println(str[1]); 

您可以拆分string并与每个字符进行比较

 public static String extractNumberFromString(String source) { StringBuilder result = new StringBuilder(100); for (char ch : source.toCharArray()) { if (ch >= '0' && ch <= '9') { result.append(ch); } } return result.toString(); } 

testing代码

  @Test public void test_extractNumberFromString() { String numberString = NumberUtil.extractNumberFromString("+61 415 987 636"); assertThat(numberString, equalTo("61415987636")); numberString = NumberUtil.extractNumberFromString("(02)9295-987-636"); assertThat(numberString, equalTo("029295987636")); numberString = NumberUtil.extractNumberFromString("(02)~!@#$%^&*()+_<>?,.:';9295-{}[=]987-636"); assertThat(numberString, equalTo("029295987636")); } 
Interesting Posts