Получить первые числа из строки на Java - PullRequest
0 голосов
/ 30 декабря 2018

Предположим, у меня есть строка, которая начинается с числа.Как я могу получить / извлечь все первые числа и преобразовать их в целое число?Я не хочу, чтобы все числа в строке, я хочу, чтобы числа от первого до последнего перед любой другой буквой или символом.

Например:

 String s= "5634-abofrda/+l8908"; // 5634
 String str="78695t08675jgk"; // 78695

Как мне получить номер 5634?Я ищу общее решение, не конкретное для описанных случаев.

Ответы [ 3 ]

0 голосов
/ 30 декабря 2018

Используйте регулярное выражение .Совпадение и групповые цифры следуют за чем угодно и заменяют все сопоставляемой группой.Например,

System.out.println(s.replaceAll("(\\d+).+", "$1"));

Печать (по запросу)

5634
0 голосов
/ 30 декабря 2018

Этот метод может использоваться для возврата числа до того, как будет найден другой символ

static int getNumbers(String s) {

    String[] n = s.split(""); //array of strings
    StringBuffer f = new StringBuffer(); // buffer to store numbers

    for (int i = 0; i < n.length; i++) {
        if((n[i].matches("[0-9]+"))) {// validating numbers
            f.append(n[i]); //appending
        }else {
            //parsing to int and returning value
            return Integer.parseInt(f.toString()); 
        }   
    }
    return 0;
 }

Использование:

getNumbers(s);
getNumbers(str);

Вывод:

5634
78695
0 голосов
/ 30 декабря 2018

Самым простым вариантом может быть просто использовать String#split:

String s = "5634-abofrda/+l8908";
String nums = s.split("-")[0];

Обратите внимание, что в случае, когда дефис не должен появляться во входной строке, тогда nums будет просто всей строкой.

Или, возможно, вы хотите это:

String s = "5634-abofrda/+l8908";
String nums = s.split("(?=\\D)")[0];

Взгляд (?=\D) будет разбивать строку каждый раз, когда есть нецифровый символ.Это оставило бы первые цифры в первой строке массива разбиения.

...