Я застрял с регулярным выражением и Java.
Моя строка ввода выглядит следующим образом:
"EC: 132/194 => 68% SC: 55/58 => 94% L: 625"
Я хочу прочитать первое и второе значения (то есть, 132
и 194
) на две переменные. В противном случае строка является статической с изменением только чисел.
Я предполагаю, что "первое значение" - 132, а второе - 194.
Это должно помочь:
String str = "EC: 132/194 => 68% SC: 55/58 => 94% L: 625";
Pattern p = Pattern.compile("^EC: ([0-9]+)/([0-9]+).*$");
Matcher m = p.matcher(str);
if (m.matches())
{
String firstValue = m.group(1); // 132
String secondValue= m.group(2); // 194
}
Если вы искали 68 и 94, то вот схема, которая подойдет:
String str = "EC: 132/194 => 68% SC: 55/58 => 94% L: 625";
Pattern p = Pattern.compile("^EC: [0-9]+/[0-9]+ => ([0-9]+)% SC: [0-9]+/[0-9]+ => ([0-9]+)%.*$");
Matcher m = p.matcher(str);
if (m.matches()) {
String firstValue = m.group(1); // 68
String secondValue = m.group(2); // 94
System.out.println("firstValue: " + firstValue);
System.out.println("secondValue: " + secondValue);
}
Вы можете решить эту проблему с помощью String.split ()
:
public String[] parse(String line) {
String[] parts = line.split("\s+");
// return new String[]{parts[3], parts[7]}; // will return "68%" and "94%"
return parts[1].split("/"); // will return "132" and "194"
}
или однострочным:
String[] values = line.split("\s+")[1].split("/");
и
int[] result = new int[]{Integer.parseInt(values[0]),
Integer.parseInt(values[1])};