#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. Я думаю, это была просто ошибка копирования и вставки.