当前位置: 代码迷 >> JavaScript >> 如何在JavaScript中展平模板字符串
  详细解决方案

如何在JavaScript中展平模板字符串

热度:55   发布时间:2023-06-05 14:07:57.0

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

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

([ ]+)|(\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()) 

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

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

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

  相关解决方案