У моего JSP есть следующий div
<td class = "detail">Hello my name is Bond
<br/>James Bond
</td>
Мне нужно найти, есть ли у класса "деталь" подстрока "Бонд Джеймс Бонд"
Поскольку у Бонда Джеймса Бонда есть "бр" посередине, как я могу найти это, есть ли в этой строке подстрока
Я пробовал несколько комбинаций / n и br в jQuery для отображения
alert($('.detail').text().toLocaleLowerCase().indexOf('bond\n james bond'));
и
alert($('.detail').text().toLocaleLowerCase().indexOf('bond<br> james bond''));
но он всегда возвращает -1. помогите мне заранее спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте text(), чтобы получить только внутренний текст td (без HTML), а затем удалите все лишние пробелы между ними.
Затем вы можете просто сопоставить его с регулярным выражением, созданным из вашего текста. См. Демонстрацию ниже:
const searchString = 'Bond James Bond';
const regex = new RegExp(searchString);
const text = $('.detail:first').text().replace(/\s+/g, ' ');
console.info(text, '-', regex.test(text));<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class = "detail">Hello my name is Bond
<br/>James Bond
</td>
</tr>
</table>У вас здесь две проблемы. Во-первых, ответ text() в этом случае удалит тег <br /> в середине элемента (так как это HTML). Во-вторых, при удалении останется много пустого места и разрыв строки. В результате вывод текста будет:
hello my name is bond
james bond
Вы можете использовать Regex для удаления разрывов строк и дополнительных пробелов перед выполнением проверки indexOf():
var text = $.trim($('.detail').text()).toLocaleLowerCase().replace(/\s+/g, ' ');
console.info(text.indexOf('bond james bond'));<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class = "detail">Hello my name is Bond
<br/>James Bond
</td>
</tr>
</table>Привет, Рори, это не будет работать в IE 8. Появляется ошибка «Объект не поддерживает свойство или метод 'trim'».
Да, trim() не поддерживается в <IE9. Вместо этого вы можете использовать регулярное выражение. Хотя в этом примере это технически не требуется, все же рекомендуется полностью дезинфицировать вводимый текст перед тем, как работать с ним.
не могли бы вы дать мне небольшую демонстрацию, как вы дали для обрезки
Проверьте это: stackoverflow.com/questions/2308134/…
решение здесь работает с .val (), но здесь я использую .text ()
Ничто здесь или в этом вопросе не использует val() ...?
ссылка, которую вы сказали мне сослаться, содержала все решения с .val (). Мне нужно решение для .text ()
Нет, используйте это: stackoverflow.com/a/2308157/519413. Он работает для любой строки, независимо от ее источника.
В качестве альтернативы используйте $.trim(). Я обновил ответ для вас
Сначала я бы поместил результат этого вызова text () в предупреждение, чтобы вы могли видеть, что он вернется к вам ... Это может помочь вам понять, что вам нужно искать. Возможно, вам придется использовать \ n \ r (или это \ r \ n?) Для новой строки - не уверен, хватит ли \ n ...