Как разбить строку между цифрами и символами в Java - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно разбить строку, содержащую серию цифр и символов. Числа могут иметь десятичное место. Также необходимо учитывать, что строка может иметь или не иметь пробелов. Мне нужно выяснить, как использовать правильное регулярное выражение.

Я пробовал разные .split() конфигурации, но это не работает так, как я хочу, чтобы оно работало.

static int getBytes (String text) {

    //the string is split into two parts the digit and the icon
    String[] parts = text.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
    double num = Double.parseDouble(parts[0]);
    String icon = parts[1];

    // checks if the user enters a valid input
    if(parts.length > 2 || icon.length() > 3) {
        System.err.println("error: enter the correct format");
        return -1;
    }

    return 0;
}
 if i have a string text = "123.45kb"; i expect = "123.45", "kb"
 or text = "242.24 mg"; i expect = "242.24", "mg"
 or text = "234    b" i expect = "234", "b"

1 Ответ

2 голосов
/ 02 июля 2019

Проблема с логикой в ​​ваших текущих взглядах состоит в том, что \\D соответствует любому нецифровому символу. Это включает в себя буквы (такие как kb), но оно также включает в себя такие вещи, как ., и любые другие нецифровые символы. Попробуйте разделить только цифры и буквы:

String text = "123.45 kb";
String[] parts = text.split("(?<=[A-Za-z])\\s*(?=\\d)|(?<=\\d)\\s*(?=[A-Za-z])");
System.out.println(Arrays.toString(parts));

Это печатает:

[123.45, kb]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...