4

在 Javascript 中,我想展平我的模板字符串。所以我想要这个:

const str = `
    my name
    is
    frank
`

要解决这个问题:

const str = 'my name is frank'

我问的原因是因为带有 `` 的大量开放空间导致 GET 请求 URL 出现错误,例如:

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>'
4

3 回答 3

2

您可以使用替换它的回调函数。

([ ]+)|(\n)
  • ([ ]+)- 匹配空格字符一次或多次。(g1)
  • |- 交替与逻辑 OR 相同。
  • (\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())

于 2019-02-25T08:13:33.477 回答
1

使用正则表达式将所有空格替换为空字符串:

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);

于 2019-02-25T08:09:01.043 回答
1

const str = `
        my name
        is
        frank
    `;
    
    console.log(str.replace(/\n+/gi, '').replace(/\s+/gi, ' '));

于 2019-02-25T08:16:45.387 回答