Регулярные выражения не знаю)
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
reader.close();
String[] resultStr = str.split("\\?");
String str1 = resultStr[1];
String[] resStr2 = str1.split("\\&");
for (int i = 0; i < resStr2.length; i++) {
if (resStr2[i].contains("=")) {
String temp1 = resStr2[i].substring(0, (resStr2[i].lastIndexOf("="))); //тут удаляется все что после равно и само равно
System.out.print(temp1 + " ");
} else {
System.out.print(resStr2[i] + " ");
}
}
for (int i = 0; i < resStr2.length; i++) {
if (resStr2[i].contains("=")) {
String temp1 = resStr2[i].substring(0, (resStr2[i].lastIndexOf("=")));
if (temp1.equals("obj")) {
String oMyGod = resStr2[i].substring((resStr2[i].lastIndexOf("=") + 1));
System.out.println();
if (proverka(oMyGod))
alert(Double.parseDouble(oMyGod));
else
alert(oMyGod);
}
}
}
}
public static boolean proverka(String stroka){
try{
Double.parseDouble(stroka);
return true;
}
catch (Exception e){
return false;
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}
str.matches("-?\\d*\\.?\\d*")
, хотя это и не все возможные варианты, но то что проверяет валидатор проходят. Непосредственно в блоке вывода параметров тоже можно использоватьstr.split("=")
и выводить [0] элемент и пробел. Заодно проверяя не равен ли он "obj". Могу прислать моё решение в личку, мне пока за него не очень стыдно.