如何分割``上的$每个实例(反引号字符串){}变量

问题描述 投票:1回答:3

所以我的问题是我怎么能对变量的每一个实例分裂与backtick的字符串。

我试着用\${.*?}但是这不会起作用,因为${variable}将变量值第一,比分割功能将被执行替换。

任何想法,该怎么办呢?

let a = 2
let b = 4
let x = `Superman${a}hello${b}one more`.split(/\${.*?}/g)

console.log(x)

在方不要:我并不想用它来包裹“或”的解决方案。

console.log('`Superman${a}hello${b}one more`'.split(/\${.*?}/g))
javascript string backticks
3个回答
1
投票

为了澄清我的评论在这里原来的问题是默认的模板文字的功能是什么一个例子:

function defaultTemplateLiteralFn(strs, ...args) {
  return strs.map((str, idx) => str+(args[idx]||'')).join('');
}

const test = "special test";
const a = 10;
const b = 432;
console.log(`This is a ${test}. "${a}+${b}=${a+b}"`)
console.log(defaultTemplateLiteralFn`This is a ${test}. "${a}+${b}=${a+b}"`)

当您使用标签模板(IE:你不提供一个函数来处理模板文字)的语言提供了做类似于我在功能defaultTemplateLiteralFn上面做一些默认的功能。它返回的值的字符串组合的部件。

该示例函数采用所述串的每一部分和所述串之后把适当的值。如果没有值,那么它使用一个空字符串。


3
投票

该行执行后,有没有办法让原始模板字符串。但是,您可以使用标签功能/标签的模板文字来获取字符串的部分,包括替换值:

function Test() {
  console.log(arguments)
  return arguments.length - 1
}

let a = 2
let b = 4
let c = Test `Superman${a}hello${b}one more`
console.log(`This template string has ${c} substituted values`)

0
投票

我做的一个方法是使用模板文字。我已经看到了这是在使用的库调用styled-components它允许我们编写CSS与JS。

希望能看到其他的方法,如果有任何?

function splitOnVariable(str, age){
  // first argument to function will always be array of strings provided in input string.
  return str
}

let a = 1;
let b = 2;

console.log(splitOnVariable`hello${a} break me on variable${b} !!!`)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.