У меня было упражнение по программированию, в котором мы должны были написать метод форматирования, который принимал бы в качестве параметров String в качестве текстового ввода, который мы хотим отформатировать, и целое число в качестве длины строк, которые мы хотим.
У нас также были определенные правила, и одно из них было таким: если слово длиннее желаемой длины, оно должно стоять на строке само по себе.
Таким образом, простой способ сделать это состоял в том, чтобы найти с помощью выражения Regex ряд символов, отличных от пробелов, по крайней мере, длина и, возможно, больше, и заменить это сопоставление на два \n в каждом сторона...
возможно, код более понятен: давайте представим, что наша желаемая длина строки равна 10
String s = line.replaceAll("([ \t])(\\S{10,})([ \t])", "\n$2\n");
System.out.println(s);
Это на самом деле работает нормально.
Моя проблема в том, что длина строки должна быть передана в качестве параметра метода форматирования; поэтому единственный способ обратиться к этому параметру — использовать его ссылку. Например:
общедоступный статический формат строки (String s, int length) { ...
// недостающие вещи
String s = line.replaceAll("([ \t])(\S{длина,})([ \t])", "\n$2\n"); System.out.println(s);
Однако в этом случае он вернет ошибку: PatternSyntaxException
Мой вопрос: есть ли способ использовать ссылку в квантификаторе (вместо числа) в качестве аргумента для количества вхождений, которые мы хотим сопоставить? Поскольку кажется, что это было бы действительно полезно, я был удивлен, что это не сработало. Также не похоже, что многие люди столкнулись с этой проблемой.