This question has already been answered:

You need to write a command that will find the symbol "-" (with a space) from the inserted text and erase it until the next letter. Example: На улице солнце -> На улице солнце

Reported as a duplicate by Grundy members, Nick Volynkin Apr 22 '16 at 7:45 .

A similar question was asked earlier and an answer has already been received. If the answers provided are not exhaustive, please ask a new question .

    2 answers 2

    Slightly unclear - you need to look for two characters: a dash and a space ( - ), no less, but in the example three characters are erased: a space, a dash and a mandatory space ( - ).

     let str = `На улице солн - це`; // Удалить именно то, что нужно, самый быстрый способ, но не уберёт пробел слева, // ибо не входит в задачу str.replace('- ', ''); // На улице солн це // 23-25ms // Уберёт пробел и слева, но чуть медленнее str.replace(/ *-\ /g, ''); // На улице солнце // 54-63ms // Как вариант для извращенцев - используя связку split + join, // вместо специально созданного для этого Б-гом replace str.split('- ').join(''); // На улице солн це // 186.5-188.7ms // Странно, но split + regExp сработал быстрее str.split(/ *- +/).join(''); // На улице солнце // 171.5-184.4ms /* Время по этому считалось. Отказ: Делалось исключительно для поверхностного сравнения и если Вы - - очешуительно умелый тестер и увидели исключительно важную ошибку - - просто скажите, без истерик, а то были инциденты :) let n = Date.now(), str = `На улице солн - це`, acc = []; for(let e = 0; e < 10; e++){ let n = Date.now(); for(let i = 0; i < 100000; i++) // Строка теста acc.push(Date.now() - n); } let info = acc.reduce((a, e) => a + e) / acc.length + 'ms'; */ 

       var text = 'На улице солн - це'; text.replace(/\s+-\s+/gm, ''); 

      Only one thing ... but if there really is a dash, it will erase it

      • The task says "exactly with a space", so it is probably worth replacing * with + . - Athari