从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")); }