Чудеса, я сам решил первую задачу "StringTokenizer", правда прицепил туда ArrayList, кто же знал что существует метод №stringTokenizer.countTokens()". А решение я сделал такое:
public static String[] getTokens(String query, String delimiter) {
StringTokenizer tokenizer = new StringTokenizer(query, delimiter);
List<String> myNewList = new ArrayList<>();
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
myNewList.add(token);
}
return myNewList.toArray(new String[myNewList.size()]);
}
Очень хитро сделали создатели задачи, я даже не думал, что так можно. А я думаю, как ограничить символы. Выходит, можно просто обрезать на 3 составляющие номера и сравнивать с общей регуляркой на номер и 2 остальные на 10 и 12 символов...
вот я придумал, но валидацию не прошло(
String line = "^(\\+\\d{1,3}|[^\\+]\\d{0,2}){0,1}(\\(\\d{3}\\)\\d{6,7}|\\d{10})$"
Вы сами то тестировали ваш вариант? Он выдает false на всех правильных ответах. Не учитывает что скобки с тремя цифрами могут располагаться где угодно в номере. Не обязательно после одной либо 2 цифр.
Всего одна задача на RegExp? Дайте хотя бы 10 - 20 разноплановых задач на регулярки. Нафиг эту змейку. Она есть в играх. Я ее уже там решил, кому надо решат там. Лучше бы больше закрепили тему выражений, потому чтобы ее вспомнить опять надо потратить время.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ