JavaScript / TypeScript:将字符串变量和字符串数组与相应设置的空格连接起来

时间:2020-09-09 08:10:50

标签: javascript string typescript

情况

我想在TypeScript中连接字符串变量和字符串数组,如以下简单示例所示:

// var1, var2: string
// arr1: string[]
const myString = 'result:' + var1 + ' ' + arr1.join(' ') + ' ' var2;

我不希望将多个空格串联在一起,并且结尾不应该有任何空格。

问题

这些变量可能设置为''或数组为空。这些导致我希望避免将多个空间串联在一起。

问题

是否有一种更优雅的方法来仅连接用一个空格分隔的设置变量?

条件

  • 该解决方案应使用更多的变量/数组
  • 解决方案应该是单线的

3 个答案:

答案 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(' ')

更新

按照建议,遵循句柄

  1. 空字符串
  2. 带有多个空格的字符串
  3. 修剪额外的空格
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 + ' ' : '')
相关问题