Самый эффективный способ извлечь все (естественные) числа из строки

Пользователи могут хотеть разграничить числа, как они хотят.

Что является самым эффективным (или простая стандартная функция) для извлечения всех (естественных) чисел из строки?

5
задан Eduardo 30 January 2010 в 21:09
поделиться

3 ответа

Вы можете использовать регулярное выражение. Я модифицировал этот пример из Учебное пособие Солнца Regex :

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Test {

    private static final String REGEX = "\\d+";
    private static final String INPUT = "dog dog 1342 dog doggie 2321 dogg";

    public static void main(String[] args) {
       Pattern p = Pattern.compile(REGEX);
       Matcher m = p.matcher(INPUT); // get a matcher object
       while(m.find()) {
           System.out.println("start(): "+m.start());
           System.out.println("end(): "+m.end());
       }
    }
}

Он находит начало и конечные индексы каждого номера. Числа, начинающиеся с 0, разрешены с регулярным выражением \ D + , но вы можете легко изменить, что если вы хотите.

6
ответ дан 14 December 2019 в 04:38
поделиться

Я не уверен, что точно понимаю ваш вопрос. Но если все, что вы хотите, состоит в том, чтобы вытащить все неотрицательные целые числа, то это должно работать довольно хорошо:

String foo = "12,34,56.0567 junk 6745 some - stuff tab tab 789";
String[] nums = foo.split("\\D+");

// nums = ["12", "34", "56", "0567", "6745", "789"]

, а затем проанализируют строки как INT (при необходимости).

2
ответ дан 14 December 2019 в 04:38
поделиться

Если вы знаете разделитель, то:

String X = "12,34,56";
String[] y = X.split(","); // d=delimiter
int[] z = new int[y.length];
for (int i = 0; i < y.length; i++ )
{
    z[i] = java.lang.Integer.valueOf(y[i]).intValue();
}

Если вы этого не сделаете, вам, вероятно, надо будет предварительно обрабатывать - вы можете сделать x.replace ("[A-ZA-Z]", "" ); и замените все символы пробелами и используйте место в качестве разделителя.

Надеюсь, что поможет - я не думаю, что есть встроенная функция.

0
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: