Как сгладить строку шаблона в JavaScript - PullRequest
0 голосов
/ 25 февраля 2019

В Javascript я хочу сгладить строку моего шаблона.Итак, я хочу это:

const str = `
    my name
    is
    frank
`

Чтобы перейти к этому:

const str = 'my name is frank'

Причина, по которой я спрашиваю, заключается в том, что большие открытые пространства с `` вызывают ошибки в запросе GETURL-адреса, например:

const url = `
    http://0.0.0.0
    :${port}/
    apiCallName?
    var1=${var1}
    var2=${var2}
`

Превратится во что-то массовое, например:

const url = '%20%20%20%20%20%20http://0.0.0.0%20%20%20%20%20%20:80/%20%20%20...'

, которое прерывает вызов.Я НЕ хочу строить строку, используя ' + var1 + '.Я считаю, что строки шаблона читаются намного лучше, поэтому я хотел бы продолжать их использовать.

ПРИМЕЧАНИЕ: он не должен заменять все пробелы.Потому что иногда мне нравится писать большие строки с пробелами в них, например:

const str = `
    <label>This is label 1</label>
    <button>This is button 1</button>
`

Это не должно терять пробелы, поэтому НЕ это:

const str = '<label>Thisislabel1</label><button>Thisisbutton1</button>'

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Вы можете использовать заменить и его функцию обратного вызова.

([ ]+)|(\n)
  • ([ ]+) - Соответствует пробелу один или несколько раз.(g1)
  • | - Чередование аналогично логическому ИЛИ.
  • (\n+) - Соответствует символу новой строки.(g2)

const str = `
    my name
    is
    frank
`

const op = str.replace(/([ ]+)|(\n+)/gm,function(match,g1,g2){
  if(g1) return ' '
  else return ''
})

console.log(op.trim())
0 голосов
/ 25 февраля 2019

const str = `
        my name
        is
        frank
    `;
    
    console.log(str.replace(/\n+/gi, '').replace(/\s+/gi, ' '));
0 голосов
/ 25 февраля 2019

Используйте регулярное выражение для замены всех пробелов пустой строкой:

const port = 'port';
const var1 = 'var1';
const var2 = 'var2';
const url = `
    http://0.0.0.0
    :${port}/
    apiCallName?
    var1=${var1}
    var2=${var2}
`
const finalUrl = url.replace(/\s+/g, '');
console.log(finalUrl);

Если середина строки может содержать пробелы (правильно сформированные URL-адреса не должны), то совпадать можно только с пробелами в начале или конце строки:

const port = 'port';
const var1 = 'var1';
const var2 = 'var2';
const url = `
    http://0.0.0.0
    :${port}/
    apiCall foo bar Name?
    var1=${var1}
    var2=${var2}
`
const finalUrl = url.replace(/\s*\n\s*/g, '');
console.log(finalUrl);
...