Regex для удаления всех символов после пробела // Android Java - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь преобразовать следующую строку 1.00 h. в 1.00 с помощью RegEx, но я новичок в этом и мне нужна ваша помощь. Я пробовал следующим образом

seanceLengthValue = Integer.parseInt(
currentService.getSeanceLength().replaceAll("\\D\\w+",""));

Ответы [ 4 ]

1 голос
/ 12 марта 2019

Вот как вы можете это сделать

String str = "1.00 h";
Pattern p = Pattern.compile("^(\\S+)");
Matcher m = p.matcher(str);
m.find();
Log.i("Findings", "value is >>" + m.group(0) + "<<");

Это даст вам все, что находится до пробела.

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

seanceLengthValue = Float.parseFloat(m.group(0)); 

Примечание: В случае нескольких пробелов оно по-прежнему дает только первое вхождение.

например; Если строка «1,00 ч, 2,00 ф»; это даст только "1,00".

1 голос
/ 12 марта 2019

Вы можете просто использовать:

seanceLengthValue = Double.parseDouble(
            currentService.getSeanceLength().replaceAll(" [a-zA-Z]", "");

Здесь мы заменяем все вхождения алфавитов и пробелов на "".Кроме того, поскольку полученная строка будет иметь значение double , вам необходимо использовать Double.parseDouble() для преобразования.

1 голос
/ 12 марта 2019

Просто сопоставьте / сохраните / запишите первые непробельные символы и закрепите выражение в начале:

^(\S+)

См. демонстрацию на regex101.com Java вам необходимо избежать обратной косой черты, чтобы она стала ^(\\S+) эффективно).

0 голосов
/ 12 марта 2019

Попробуйте этот шаблон: (\d*\.\d+|\d+)

Он использует чередование, чтобы позволить вам соответствовать различным типам форматов десятичных чисел:

\d*\.\d+ будет соответствовать нулю или более цифрам \d, буквально ставит точку \., а затем одну или несколько цифр \d+, поэтому будет соответствовать 1,0, 0,01 и т. Д.

\d+ - соответствует одной или нескольким цифрам, если есть десятичный разделитель.

Демо

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