Пытаюсь найти книгу по названию.
Допустим, существует книга «Джунгли». Я хочу найти это, даже если ищу
Надеюсь, ты понимаешь. Я использую matches, чтобы добавить в поиск все книги, соответствующие этому названию. Кто-нибудь знает, как это исправить?
public ArrayList<Book> search(String title){
ArrayList<Book> matches = new ArrayList<>();
for (Book b : Books){
String s = b.getTitle();
if (s.equalsIgnoreCase(title)||s.trim().contains(title))
matches.add(b);
}
return matches;
}
почему Юнг, а не ДжунГ?
в основном конвертировать все в верхний (или нижний) s.toUpperCase().contains(title.toUpperCase())
@azro что ты имеешь в виду? «Юнг» - это исходное имя, и я имею в виду, что если я буду искать по частям имени, я могу найти книгу, но если я буду искать по частям имени, но в верхнем регистре (как не в исходном имени) не работает .
@Zuzu, вы должны лучше объяснить (отредактировать свой пост), вы имеете в виду, что это должно быть (то же самое слово без учета регистра) ИЛИ (часть слова с учетом регистра)?
Я бы выбрал более надежное решение на основе RegEx
Итак, ваш код должен работать, объясните, что не работает
@azro вопрос довольно ясен, ОП говорят, что в настоящее время работает, а что нет.
@FedericoklezCulloca, это неверный смысл, перечисление - это не ожидание, а то, что у него на самом деле есть, и каждый должен работать, но это вообще не сказано;)




contains чувствителен к регистру, поэтому, если вам нужен поиск без учета регистра, то один из часто используемых методов - это принудительное использование обеих сторон одного и того же регистра (верхнего или нижнего, не имеет значения, если вы используете одно и то же с обеих сторон. ).
s.trim().toUpperCase().contains(title.toUpperCase())
Странная разница с Jung и JunG здесь не сработает, но это хорошее решение.
Конечно, это сработает, s ("Джунгли") будет преобразован в "JUNGLE", а title ("JunG") будет преобразован в JUNG, который содержится в s.
Это не поиск без учета регистра, см. stackoverflow.com/a/6996550 для списка случаев, которые могут вызвать проблемы.
Метод contains не чувствителен к регистру