2016-08-10 2 views
0

Имейте ситуацию, когда у меня есть строка с несколькими строками ссылок, как показано ниже. Мне нужно заменить ссылку с фактическими ссылки, например: <a href=”http://www.testing.com” target=_blank>http://www.asdfasd.com</a>Используйте Javascript или Lodash для замены строки

Пример текста:

http://www.testing.com Simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's 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 https://asdfasdf.com

Я использую ниже функции, чтобы получить индексы везде, что «HTTP» происходит, но хотел бы знать, если есть более простой способ.

indexes(comments.Answers, "http"); 

function indexes(source, find) { 
    var result = []; 
    for (var i = 0; i < source.length; ++i) { 
    // If you want to search case insensitive use 
    // if (source.substring(i, i + find.length).toLowerCase() == find) { 
    if (source.substring(i, i + find.length) == find) { 
     result.push(i); 
    } 
    } 
console.log("result ", result); 

    return result; 
} 
+0

В исходном тексте нет экземпляров 'http'. Можете ли вы более четко узнать, что вы пытаетесь сделать? Похоже, что RegEx может быть возможным решением. – dave

+0

Да, почему бы просто не сделать 'str.replace (/www.testing.com/gi, '$1')'? –

+0

Я не знаю, какие будут URL-адреса. Текст предоставляется клиентом и требует автоматического форматирования URL-адресов. –

ответ

0

Не катитесь с собственным регулярным выражением, вы сделаете это неправильно. И вы даже не поймете, что это неправильно, пока не стало слишком поздно. Вы будете тратить часы и дни на свое регулярное выражение и, наконец, заставить его работать, выходить на улицу и пьянствовать, время от времени, только для ваших клиентов, чтобы вернуться через месяц, разозлившись, что вы пропустили какой-то край, вашу работу и заставлять вас начинать с нуля. Просто не ходи туда.

Используйте проверенную и проверенную библиотеку.

Плагин linkify создан специально для вашей цели. У них есть тестовая коробка на странице, где вы можете попробовать, она, кажется, отлично справляется с вашим примером текста.

Если вы действительно хотите создать ссылки вручную, библиотека validator.js имеет функцию isURL, которая проверяет, является ли данная строка URL. Вы можете выполнять итерацию через ваши текстовые слова с разделителями пробелов и проверять, является ли каждый URL-адресом, и сделать его ссылкой по мере необходимости.

Если вы хотите изучить дополнительные параметры, я бы порекомендовал читать ответы на вопросы this old post.

Смежные вопросы