Я понял. Автор, хоть и не сознается, хочет обернуть юзернеймы в ссылки. И следующим вопросом от него будет вопрос с тремя юзернеймами в строке.
Но для этого не надо бить строки. Для этого надо найти юзернейм через match (намного более простой - начинается с @, заканчиванется на ",", два пробела или конец строки) и его начало через indexOf. в новую строку поместить начало и юзернейм с оберткой,от старой - отрезать по конец найденного юзернейма и повторять, пока не закончатся юзернеймы в строке. Потом хвост приделать к результату.
Хотя даже если и не надо делать обертку - вместо склеивания новой строки можно формировать массив подобным же образом в цикле.
thinksdifferent, поскольку из исходного кода в вопросе многое непонятно, я просто показал общий подход: остаток делить на количество оставшихся элементов и отнимать то, что получилось для следующей итерации.
Адаптировать этот код для вашего случая вы можете сами.
Я разбиваю данные из csv по строкам используя split("\r\n")
это уже неверно, корректно прочитать csv можно только последовательным чтением стейт машиной (немного ускоренной работой не по каждому символу, а через чтение кусками до ближайшего служебного символа).
szQocks, ну в данном случае можно и на css, просто сгенерить инлайновый svg с помощью js, можно даже на этапе сборки проекта. а внутри инлайнового svg вполне себе работают селекторы на сиблинг и ховер: https://codepen.io/FragsterAt/pen/KKJWomN
Ankhena, а зачем фоном и текст поверх? прям внутрь svg можно положить. При этом если svgбудет инлайновым, то еще и стили всякие и анимации с прочим можно прикрутить.