Всем добрый день! Интересно, может ли кто-нибудь помочь мне.
У меня есть строка -2.100 CM 1.000 CM 1.025 CM
Проблема заключается в получении значений до CM
, например -2.1
, 1.0
, 1.025
Pattern pattern = Pattern.compile("(\\-*\\d*.\\d*) CM"); would give me -2.1,
Pattern pattern = Pattern.compile(" (\\-*\\d*.\\d*) CM"); 1.0
Не удается получить третье значение (есть ли способ получить значения в соответствии с их вхождением?
Вы можете разделить строку.
String str = "-2.100 CM 1.000 CM 1.025 CM";
String[] array = str.split("\\s+CM\\s*");
for (String s : array) {
System.out.println(new Double(s));
}
вывод:
-2.1
1.0
1.025
Вы можете попробовать с помощью Pattern также использовать Positive Lookahead.
String str = "-2.100 CM 1.000 CM 1.025 CM";
Pattern p = Pattern.compile("[+-]?\\d+\\.?\\d*(?= CM)", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(new Double(m.group()));
}
вывод:
-2.1
1.0
1.025
Попробуй это,
String input = "-2.100 CM 1.000 CM 1.025 CM";
String[] result = input.split("\\s*CM\\s*");
1.000
. ОП хочет соответствовать только1.0
.1.0
для1.025
. ОП хочет соответствовать1.025
.