Соединение строк в JavaScript — это тема, которую к концу статьи можно разделить на две категории: интерполяция строк и обычная конкатенация строк.
Что касается интерполяции строк, оказывается, литералы шаблонов фактически выводят то, что вы вводите, включая разрывы строк и пробелы; таким образом, мы можем использовать интерполяцию строк, чтобы разбить строки по своему желанию.¹
Пробел в литералах шаблона
Таким образом, литералы шаблонов будут выводиться так, как они появляются, с пробелами и всем остальным! Из-за этого помните о пустых местах или линиях. Невидимые разрывы строк и пробелы преобразуются в читаемый текст с помощью литералов шаблонов.
const blankSpace = ` first second third `; [line break] first ....second ..third [line break] [line break]²
Когда код токенизируется, существует разница между разрывами строк в литералах шаблонов путем простого разделения строки и разрывом строки \n при использовании конкатенации строк. Использование литерального формата шаблона позволяет нам уместить все в одной строке.¹
Мы можем вызывать литералы шаблонов для деструктурирования/распаковки массивов, а также использовать …args вместо Array.from(arguments).⁴
const indexAndValue = (arr) => { return arr.map((v, i) => { return {i, v}; }); }; let arr = indexAndValue(['arg1', 'arg2', 'arg3']) const foo = (arg1, ...args) => { return `the first arg is ${arg1} with remaining args: ${args}`; } console.log(foo(arr[0]['v']));
первый аргумент — arg1
с остальными аргументами:
const foo = (arg1, ...args) => { return `the first arg is ${arg1} \ with remaining args: ${args}`; }; console.log(foo(arr[0]['v'], arr[1]['v'], arr[2]['v']));
первый аргумент - arg1 с остальными аргументами: arg2,arg3
Первый журнал консоли превращает литералы шаблона, содержащие неявный разрыв строки, в настоящий разрыв строки, а второй журнал консоли экранирует символ разрыва строки. Для переосмысления вы можете попробовать \n, что создаст новую строку! \t создаст горизонтальную вкладку.³
Если в строках есть комментарии в стиле JavaScript, и вы хотите, чтобы текст без литералов шаблона переносил оператор return между строками без лишних пробелов и комментариев, затем возьмите разрывы строк, выполните итерацию и накапливайте по каждому подмассиву, пока не начнется комментарий, затем остановитесь и добавьте разрыв строки \n, а затем сосредоточьтесь на следующей строке ввода.
const saySomething = () => { return 'My first really long statement //add some comments here \n ' + 'will hopefully output in one line //another comment \n ' + 'when all is said and done.'; }; console.log(saySomething()); function uncomment(input) { let arrInput = input.split('\n'); for (let i = 0; i < arrInput.length; i++) { arrInput[i] = arrInput[i].trim().split(''); } // each subarray is a new line let result = ''; for (let subarray of arrInput) { for (let i = 0; i < subarray.length; i++) { if (subarray[i] === '/' && subarray[i+1] === '/') { break; } else { result += subarray[i]; } } result += '\n'; } // remove the last line break with substring return result.substring(0, result.length - 1); }; console.log(uncomment(saySomething()));
Для дальнейшего ознакомления см. генерация многострочных строк с помощью шаблонных литералов!
[1]: Идея, по словам Алекса Митровича, состоит в том, чтобы иметь возможность обернуть ввод в длинный оператор возврата. Токенизация — это создание связи между пустым пространством и его проявлением, и это больше, чем просто разрыв строки \n при использовании конкатенации строк.
[2]: Саманта Минг. Как создать многострочную строку с шаблонными литералами в JavaScript
https://medium.com/dailyjs/how-to-create-multi-line-string-with-template- литералы-в-javascript-a3a140d0b0f6
[3]: FreeFormatter.com. Бесплатный онлайн-инструмент Escape/Unescape для JavaScript (JS)
https://www.freeformatter.com/javascript-escape.html
[4]: Джастин Кристенсен вводит деструктурирование/распаковку для массивов, а также использование …args вместо Array.from(arguments), и теперь пришло время вернуть эти args с литералами шаблона.