Matcher.matches() всегда имеет значение false ⇐ JAVA
-
Anonymous
Matcher.matches() всегда имеет значение false
Я пытался написать код Ката, это должно быть легко, но я не знаю, почему он не работает. Целью этого упражнения является преобразование строки в новую строку, в которой каждый символ в новой строке имеет вид "(", если этот символ встречается в исходной строке только один раз, или ")" , если этот символ встречается в исходной строке более одного раза. Игнорируйте заглавные буквы при определении того, является ли символ дубликатом.
Мой код для тестирования:
публичный класс Ката { public static void main(String[] args) { Строка t = «отступить»; System.out.println(Kata.encode(t)); } общедоступное статическое строковое кодирование (строковое слово) { Результат StringBuilder = новый StringBuilder(); char[] arr = word.toCharArray(); for (char c : arr) { Шаблон шаблона = Pattern.compile("^[" + c + String.valueOf(c).toUpperCase() + "]{2,}+$"); Сопоставитель = шаблон.Сопоставитель(слово); если (matcher.matches()) result.append(")"); еще result.append("("); } вернуть результат.toString(); } } Я пытался заменить matches() на find() и всегда писал "((((((", и в debug всегда соответствует false в условии if.
Кроме того, я хочу сказать, что пробовал другие шаблоны с тем же результатом, например "[" + c + String.valueOf(c).toUpperCase() + "]{2,}" и я Я знаю другие способы создания Ката, но я хочу знать, почему шаблон и сопоставление не работают, потому что это не первый раз, когда это происходит на Java, и на других языках у меня не было подобных проблем.
Я пытался написать код Ката, это должно быть легко, но я не знаю, почему он не работает. Целью этого упражнения является преобразование строки в новую строку, в которой каждый символ в новой строке имеет вид "(", если этот символ встречается в исходной строке только один раз, или ")" , если этот символ встречается в исходной строке более одного раза. Игнорируйте заглавные буквы при определении того, является ли символ дубликатом.
Мой код для тестирования:
публичный класс Ката { public static void main(String[] args) { Строка t = «отступить»; System.out.println(Kata.encode(t)); } общедоступное статическое строковое кодирование (строковое слово) { Результат StringBuilder = новый StringBuilder(); char[] arr = word.toCharArray(); for (char c : arr) { Шаблон шаблона = Pattern.compile("^[" + c + String.valueOf(c).toUpperCase() + "]{2,}+$"); Сопоставитель = шаблон.Сопоставитель(слово); если (matcher.matches()) result.append(")"); еще result.append("("); } вернуть результат.toString(); } } Я пытался заменить matches() на find() и всегда писал "((((((", и в debug всегда соответствует false в условии if.
Кроме того, я хочу сказать, что пробовал другие шаблоны с тем же результатом, например "[" + c + String.valueOf(c).toUpperCase() + "]{2,}" и я Я знаю другие способы создания Ката, но я хочу знать, почему шаблон и сопоставление не работают, потому что это не первый раз, когда это происходит на Java, и на других языках у меня не было подобных проблем.
Мобильная версия