Matcher.matches() всегда имеет значение falseJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Matcher.matches() всегда имеет значение false

Сообщение Anonymous »


Я пытался написать код Ката, это должно быть легко, но я не знаю, почему он не работает. Целью этого упражнения является преобразование строки в новую строку, в которой каждый символ в новой строке имеет вид "(", если этот символ встречается в исходной строке только один раз, или ")" , если этот символ встречается в исходной строке более одного раза. Игнорируйте заглавные буквы при определении того, является ли символ дубликатом.

Мой код для тестирования:

публичный класс Ката { 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, и на других языках у меня не было подобных проблем.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»