Как проверить строку, чтобы увидеть, содержит ли она какие-либо строки из массива?
Вместо того, чтобы использовать
if (string.contains(item1) || string.contains(item2) || string.contains(item3))
java
string
coding-style
if-statement
arowell
источник
источник
Ответы:
РЕДАКТИРОВАТЬ: Вот обновление с использованием потокового API Java 8. Так много чище. Можно комбинировать и с регулярными выражениями.
Кроме того, если мы изменим тип ввода на List вместо массива, который мы можем использовать
items.parallelStream().anyMatch(inputStr::contains)
.Вы также можете использовать,
.filter(inputStr::contains).findAny()
если хотите вернуть соответствующую строку.Оригинальный слегка датированный ответ:
Вот (ОЧЕНЬ ОСНОВНОЙ) статический метод. Обратите внимание, что в строках сравнения он чувствителен к регистру. Примитивный способ сделать это чувствительно к регистру будет звонить
toLowerCase()
илиtoUpperCase()
на обоих входных и тестовых строк.Если вам нужно сделать что-то более сложное, чем это, я бы порекомендовал взглянуть на классы Pattern и Matcher и научиться делать некоторые регулярные выражения. Как только вы поймете это, вы можете использовать эти классы или
String.matches()
вспомогательный метод.источник
Строка Утилиты
Использование:
Он вернет индекс найденной строки или -1, если ничего не найдено.
источник
Вы можете использовать метод String # match следующим образом:
источник
Возможно, самым простым способом было бы преобразовать массив в java.util.ArrayList. Как только он окажется в массиве, вы можете легко использовать метод содержимого.
источник
string
есть лиString
в массиве s, а не содержится ли в массивеString
sstring
..equals()
в своем посте, что очень запутанно. Я считаю, что они должны редактировать свой вопросЕсли вы используете Java 8 или выше, вы можете положиться на Stream API, чтобы сделать такую вещь:
Предполагая, что у вас есть большой массив
String
для тестирования, вы также можете запустить поиск параллельно с помощью вызоваparallel()
, тогда код будет выглядеть так:источник
Вот одно из решений:
источник
Начиная с версии 3.4 Apache Common Lang 3 реализует метод containsAny .
источник
Более groovyesque подход будет использовать инъекционный в сочетании с метаклассом :
Я бы с удовольствием сказал:
И метод будет:
Если вы хотите, чтобы в любой будущей переменной String присутствовал containsAny, добавьте метод к классу вместо объекта:
источник
Попробуй это:
источник
И если вы ищете совпадение без учета регистра, используйте шаблон
источник
Если вы seraching для целых слов вы можете сделать это , что работает случай без учета регистра .
источник
Мы также можем сделать так:
источник
Ниже должно работать для вас, предполагая, что Strings - это массив, в котором вы ищете:
где mykeytosearch - строка, которую вы хотите проверить на существование в массиве. mysearchComparator - это компаратор, который будет использоваться для сравнения строк.
Обратитесь к Arrays.binarySearch для получения дополнительной информации.
источник
источник