#javascript #reactjs #regex #jsx
#язык JavaScript #реагирует на #регулярное выражение #jsx
Вопрос:
Эти четыре строки хранятся в ptr в виде массива объектов
["NF: (Chuckling)","EM: And we taught not very long. Ms. Fox (ph) took my place. I met Ethan and we","were married in February (Chuckling). I had taught from September to February--","NF: Wow!"]
Я пытаюсь показать их в jsx построчно и выделять жирным шрифтом каждое слово перед двоеточием, если в какой-то строке нет двоеточия, то оно не должно выделять жирным шрифтом всю строку, как показано ниже, оно выделяет жирным шрифтом только слово перед двоеточием, если в строке есть двоеточие
НФ: (Посмеиваясь)
ЭМ: И мы учили не очень долго. Мисс Фокс (ph) заняла мое место. Я встретила Итана, и мы
поженились в феврале (Посмеиваясь). Я преподавал с сентября по февраль—
НФ: Ух ты!
lt;p key={k}gt;{ptr.split(/(?=:)/).map((x,i)=gt; i===0 ? lt;b key={i}gt;{x}lt;/bgt; : x) } lt;/pgt;)
Ответ №1:
Вам нужно проверить, содержит ли массив, который вы обрабатываете внутри .map()
, более одного элемента (чтобы проверить, действительно ли произошло разделение и строка была разделена по крайней мере на два фрагмента).
Добавьте третий аргумент в .map()
и добавьте amp;amp; arr.lengthgt;1
проверку:
lt;p key={k}gt;{ptr.split(/(?=:)/).map((x,i,arr)=gt; i===0 amp;amp; arr.lengthgt;1 ? lt;b key={i}gt;{x}lt;/bgt; : x) } lt;/pgt;)
Комментарии:
1. Спасибо! Теперь с этим ответом все в порядке!