Обнаружить и заменить длинную строку на Javascript или jQuery - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу обнаружить длинных видимых строк , которые находятся внутри случайных HTML элементов, например, обнаружить строки длиннее 100 символов, как некоторые URL-адреса. Вариант использования состоит в том, чтобы избежать этих строк из ввода WYSIWYG, поскольку они нарушают пользовательский интерфейс.

Как я могу сделать это с Javascript или jQuery?

Например, как я могу обнаружить строку длиной более 100 символов (URL, но без , ищущий URL с регулярным выражением) в этом HTML? Начиная с селектора #content:

Бонус за возможность заменить его на более короткую строку

<div id="content">
  <table border="0" cellspacing="0" cellpadding="0" style="margin: 0; padding: 0; border: 0; width:100%; border-collapse:collapse; color:#595959; background-color:#F7F7F7; font-size: 11pt;">
    <tbody style="font-family: Verdana, sans-serif;">
      <tr>
        <td>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</td>
      </tr>
      <tr>
        <td>Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic
          typesetting, remaining essentially unchanged.</td>
      </tr>
      <tr>
        <td>It has https://www.google.com/search?q=search+term+coronavirus+is+fake&rlz=1C1GCEB_enNL890NL890&ei=RzKIXvv9Oo3XkwXRgIG4CQ&start=50&sa=N&ved=2ahUKEwi7veqJm87oAhWN66QKHVFAAJc4KBDw0wN6BAgLED4&biw=1842&bih=1115 survived not only five centuries, but
          also the leap into electronic typesetting, remaining essentially unchanged.</td>
      </tr>
    </tbody>
  </table>
</div>

1 Ответ

0 голосов
/ 04 апреля 2020

Примерно так: обратите внимание, что мне потребовалось много времени, чтобы выяснить, почему замена не понравилась &

Я предполагаю, что длинные тексты, например, не найдены внутри HREF. Если это так, нам нужно больше обработки

ПРИМЕЧАНИЕ. В вашем тексте есть только одна строка длиной более 100 символов, поэтому я ограничился 80 символами

$(function() {
  const $content = $("#content");
  let html = $content.html()
  $content.text().split(/\s+/gm)
    .filter(str => str.trim().length > 80)
    .forEach(str => {
      str = str.replace(/\&/g, "&amp;")
      html = html.replace(str, `<span class="replace">${str.slice(0,50)+"..."}</span>`);
    })
  $content.html(html);
})
.replace {
  color: red;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...