Как я могу вставить или удалить вкладку до / после каждой новой строки в строке с помощью Javascript?

#javascript

#javascript

Вопрос:

Рассмотрим следующую строку как выделение в текстовой области:

«Я хочу вставить n табуляцию после каждой новой строки в этом выборе. n Я также хочу знать, как сделать наоборот, удаляя вкладку перед каждой новой строкой в этом выборе. «

И упрощенный пример задействованного кода:

 var userWantsToIndentSelection = true,
userWantsToOutdentSelection = false,
start = this.selectionStart,
end = this.selectionEnd,
selection = text.slice(start,end),
newline = /r|n/.exec(selection);

if(newline){
    if (userWantsToIndentSelection){

        // add tabs after each newline

    }
    else if (userWantsToOutdentSelection) {

        // remove tabs before each newline

    }
}

if(!newline){

    // Handling just one line (cursor at front of line, no selection) is simple.
    // Perhaps I don't need a special handler though
    // and can use the new line handler for single and multiple line selections.
    // Mention it in your answer if you like.

}
  

Как я могу вставить или удалить вкладку до / после каждой новой строки в строке с помощью Javascript?

Комментарии:

1. Я не слишком много возился с регулярными выражениями, и хотя это может быть решением, я надеялся, что смогу использовать функции slice() map() или filter (), о которых я читал.

2. выделение = » t» selection.split(«n»).join(» n t») добавит строку. измените кавычки в разделении / соединении, чтобы отменить.

3. @dandavis публикует это в качестве ответа, это очень просто, и это сработало отлично.

Ответ №1:

вы можете использовать это регулярное выражение src.replace(/^/gm, "t");

^ соответствует началу строки

m Сообщает движку регулярных выражений использовать многострочный режим, чтобы ^ соответствовать каждой строке, а не только началу строки.