Если вам все равно, соответствует ли это слово целиком, то indexOf()
будет намного быстрее.
Если, с другой стороны, вам необходимо различать are
, harebrained
, aren't
и т. Д., Вам необходимо регулярное выражение: \bare\b
будет соответствовать только are
в целом слово (\\bare\\b
на Java).
\b
- это якорь границы слова, который соответствует пустому пространству между буквенно-цифровым символом (буква, цифра или подчеркивание) и не буквенно-цифровым символом.
Предупреждение: это также означает, что если ваш поисковый термин на самом деле не является словом (скажем, вы ищете ###
), то эти привязки границ слов будут совпадать только в строке, такой как aaa###zzz
, но не в +++###+++
.
Дальнейшее предостережение: по умолчанию Java имеет ограниченное представление о том, что представляет собой буквенно-цифровой символ. Здесь учитываются только буквы / цифры ASCII (плюс подчеркивание), поэтому привязки границ слов не будут работать с такими словами, как élève
, relevé
или ärgern
. Подробнее об этом (и о том, как решить эту проблему) читайте здесь .