在模板文字中包含括号()吗?

时间:2018-10-12 14:17:11

标签: javascript node.js

使用模板文字时如何在字符串中包含括号()

当前其输出:

Test Yes Test

我希望这样输出带有括号:

Test (Yes) Test

代码:

let type = "Yes";
let string = `Test ${type? (type) : ''} Test`;
console.log(string);

3 个答案:

答案 0 :(得分:2)

您可以在模板中使用模板

const type = 'yes';
const string = `Test ${type? `(${type})` : ``} Test`;

console.log(string)

答案 1 :(得分:1)

您可以包装整个placeholder

let type = 'yes';
let string = `Test (${type? type : ''}) Test`;

console.log(string)

或者如果类型是虚假的,如果您不需要包含它,则可以用+将其连接起来或使用嵌套的占位符:

let type = 'Yes';
let string = `Test ${type ? `(${type})` : ''} Test`;

console.log(string)

为了娱乐,您可以编写一个Tagged template以使其更可重用:

function myTag(strings, ...values) {
  let result = '';
  strings.forEach((string, i) => {
    // strings will always be +1 length over values as per the spec
    const value = values[i] ? `(${values[i]})` : ''
    result += string + value;
  });
  return result;
}

const test1 = "Yes";
const result1 = myTag`Test ${test1} Test`;
console.log(result1);

const test2 = null;
const result2 = myTag`Test ${test2} Test`;
console.log(result2);

答案 2 :(得分:1)

您需要指定括号是字符串的一部分,而不仅仅是操作顺序。

let string = `Test ${type? "(" + type + ")" : ''} Test`;