Split () с регулярным выражением Java - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь разбить строку, например: вещь 1 = $ 2 вещь 2 = $ 3 вещь 3 = $ 4 поэтому, конечно, я не могу разделить пространство, потому что мне интересно узнать цены на все товары. Итак, я создал регулярное выражение

    String[] prices = line.split("[a-zA-Z]+\\s[0-9]+\\=\\$");

но в выводе я получаю 4 элемента. Одна - пустая строка и остальные значения, которые я хотел. Я не понимаю, почему 4? Я должен дать три строки Что я тут делаю неправильно?

Спасибо

1 Ответ

0 голосов
/ 11 сентября 2018

Здесь много предположений, но с целью найти все цены в данной строке, я бы сделал следующее вместо попытки разбить строку как таковую .

String line = "item 1 = $2 item 2 = $3 item 3 = $4";
Pattern pat = Pattern.compile("\\$([\\d]+)");
Matcher m = pat.matcher(line);
while (m.find()) {
    System.out.println(m.group(1));
}

Выход:

2
3 * * +1010 4

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

Такое обновленное регулярное выражение может быть:

Pattern pat = Pattern.compile("\\$([\\d]+[.]?[\\d]*)");

И с измененным вводом:

 String line = "item 1 = $2 item 2 = $3.01 item 3 = $4.53";

Получается:

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