Как объединить строку и добавить к ней html-тег?

#javascript #reactjs

Вопрос:

У меня есть строка что-то вроде:

 Lorem ipsum dolor sit amet, #consectetur and #adipiscing   

Я хочу добавить html-тег для хэштегов, которые присутствуют в строке. Ожидаемый результат составляет:

 Lorem ipsum dolor sit amet, lt;a href="/users/tag/consectetur"gt;#consecteturlt;/agt; and lt;a href="/users/tag/adipiscing"gt;#adipiscinglt;/agt;  

Я использую строковый оператор javascript split() и join(), но не получаю ожидаемого результата.

 const string = "Lorem ipsum dolor sit amet, #consectetur and #adipiscing"     function addHtmlTag(string){  string = string.split("#").join('lt;a href="#/users/tag/"gt;#lt;/agt;');  return string  } console.log(addHtmlTag(string))  

Каковы будут изменения при добавлении html-тега?

Комментарии:

1. Вероятно, вы не получаете ожидаемый результат, потому что код выходит из строя при const string = Lorem ipsum ? Это синтаксическая ошибка

2. @JeremyThille я забыл дать «» в вопросе

Ответ №1:

Вы можете использовать что-то вроде этого:

 const str = "Lorem ipsum dolor sit amet, #consectetur and #adipiscing"  const replacedStr = str.split(" ").map(word =gt; (  word[0] === "#" ? `lt;a href="/users/tag/${word.split("#")[1]}"gt;${word}lt;/agt;` : word )).join(" ")  console.log(replacedStr) 

При этом выполняется поиск слов, которые начинаются с "#" a тега и добавляются на основе этого слова.

Комментарии:

1. Мне всегда нравятся ваши ответы! Хитро!!! 🙂

2. Всегда рад слышать этого человека, спасибо!

3. @SinanYaman Это самый элегантный код, который я когда-либо видел 🙂

Ответ №2:

Он может заменить регулярное выражение

 const str = 'Lorem ipsum dolor sit amet, #consectetur and #adipiscing'  const result = str.replace(/#(w )b/g, 'lt;a href="/users/tag/$1"gt;#$1lt;/agt;')    console.log(result) 

Ответ №3:

Вы пропустили двойные квоты («»)

 const string = "Lorem ipsum dolor sit amet, #consectetur and #adipiscing"  

Комментарии:

1. Я думаю, это была просто ошибка копирования и вставки.