我想在TypeScript中连接字符串变量和字符串数组,如以下简单示例所示:
// var1, var2: string
// arr1: string[]
const myString = 'result:' + var1 + ' ' + arr1.join(' ') + ' ' var2;
我不希望将多个空格串联在一起,并且结尾不应该有任何空格。
这些变量可能设置为''
或数组为空。这些导致我希望避免将多个空间串联在一起。
是否有一种更优雅的方法来仅连接用一个空格分隔的设置变量?
答案 0 :(得分:4)
您可以使用解构将所有内容连接到一个临时数组中,然后使用过滤器删除所有空元素,然后在该批次上调用join。
let var1 = "var1";
let arr1 = ["one", "", "two"];
let var2 = ""
const myString = "result:" + [var1, ...arr1, var2].filter(s => s).join(' ');
console.log(myString);
答案 1 :(得分:1)
这满足您的要求吗?
const strArr = ['result:' + var1, ...arr1, var2].map((a) => a.trim()).join(' ')
更新
按照建议,遵循句柄
const strArr = ['result:' + var1, ...arr1, var2].map((a) => a.trim()).filter(Boolean).join(' ')
更新2
如果您使用的是ES2019,则可以单遍操作:
const strArr =
['result:' + var1, ...arr1, var2]
.flatMap((el) => Boolean(el.trim()) ? [el.trim()] :[]).join(' ')
答案 2 :(得分:0)
您可以尝试以下操作:
const cleanedResult = result.replace(/\s\s+/g, ' ').trim()
这也会同时删除变量中的多个空格。
如果您不想这样做,可以尝试以下解决方案:
const result = 'result:' + (var1 ? var1 + ' ' : '') + (arr1 ? arr1.join(' ') : '') + (var2 ? var2 + ' ' : '')