从字符串中提取数字 - StringUtils的Java的(Extract digits from

2019-07-20 05:07发布

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

例如:helloThisIsA1234Sample。 我想1234

这是一个考虑到的数字序列会在相同的位置仅在字符串中一次,但没有出现。

(对于那些谁会问,我有一台服务器的名称,并需要在其中抽取一个特定的号码)

我想使用StringUtils类Apache的commomns。

谢谢!

Answer 1:

使用此代码numberOnly将包含您所需的输出。

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


Answer 2:

我总是喜欢用番石榴字符串utils的或为这些类型的问题类似:

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


Answer 3:

只有一条线路:

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


Answer 4:

您还可以使用java.util.Scanner

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

您可以使用next()而不是nextInt()得到的数字为字符串。

您可以检查数的使用存在hasNextInt()Scanner



Answer 5:

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

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



Answer 6:

试试这个 :

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

这意味着:由空字符串替换的数字字符(0-9),所有出现!



Answer 7:

我创建了同样的问题,一个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"));
    }
 }


Answer 8:

您可以使用下面的正则表达式。

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


Answer 9:

        String line = "This order was32354 placed for QT ! OK?";
        String regex = "[^\\d]+";

        String[] str = line.split(regex);

        System.out.println(str[1]);


Answer 10:

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



Answer 11:

如果你有符号和你只想号码试试这个办法:

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


Answer 12:

您可以分割字符串,并与每个字符比较

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

测试代码

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


Answer 13:

一个非常简单的解决方案,如果由逗号分隔或如果不通过逗号分隔

public static void main(String[] args) {

    String input = "a,1,b,2,c,3,d,4";
    input = input.replaceAll(",", "");

    String alpha ="";
    String num = "";

    char[] c_arr = input.toCharArray();

    for(char c: c_arr) {
        if(Character.isDigit(c)) {
            alpha = alpha + c;
        }
        else {
            num = num+c;
        }
    }

    System.out.println("Alphabet: "+ alpha);
    System.out.println("num: "+ num);

}


Answer 14:

   `String s="as234dfd423";
for(int i=0;i<s.length();i++)
 {
    char c=s.charAt(i);``
    char d=s.charAt(i);
     if ('a' <= c && c <= 'z')
         System.out.println("String:-"+c);
     else  if ('0' <= d && d <= '9')
           System.out.println("number:-"+d);
    }

输出: -

number:-4
number:-3
number:-4
String:-d
String:-f
String:-d
number:-2
number:-3


文章来源: Extract digits from string - StringUtils Java