如何在 JavaScript 中展平模板字符串
How to flatten a template string in JavaScript
在 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>'
使用正则表达式将所有空格替换为空字符串:
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);
你可以使用replace和它的回调函数。
([ ]+)|(\n)
([ ]+)
- 匹配 space 个字符一次或多次。 ( 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())
const str = `
my name
is
frank
`;
console.log(str.replace(/\n+/gi, '').replace(/\s+/gi, ' '));
在 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>'
使用正则表达式将所有空格替换为空字符串:
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);
你可以使用replace和它的回调函数。
([ ]+)|(\n)
([ ]+)
- 匹配 space 个字符一次或多次。 ( 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())
const str = `
my name
is
frank
`;
console.log(str.replace(/\n+/gi, '').replace(/\s+/gi, ' '));