как разделить текст по нескольким разделителям , изменить текст, но вернуть результат с исходными разделителями

я магу как то получить на выходе текст с исходными пробелами и с -

const translateHelper = (f,text) => {
    return text.split(/[\s-]]/).map(e => {
        const str = e[0].toLowerCase() + ' ' + e.slice(1)
        //функция f изменяет текст но на выходе мне нужнен измененный текст с пробелами и с -
        return f(str)
    }).join('')
}

есть такое 'anno bem ci drag-error' мне нужно отправить каждoe слово в f и при выходе получить с пробелами и с - 'alfa beta cxc delta-enum'


Ответы (1 шт):

Автор решения: teran

вместо разбиения по разделителям и маппинга воспользуйтесь заменой. разделители останутся на своих местах

const txt = "anno bem ci drag-error";

let result = txt.replaceAll(/([^\s-]+)/g, m => m.toUpperCase() );

console.log(result);

→ Ссылка