`String.raw`当最后一个字符是`\`时

时间:2017-03-05 04:55:36

标签: javascript

String.raw非常有用。例如:

let path = String.raw`C:\path\to\file.html`

但是,当模板字符串的最后一个字符为\时,它将成为语法错误。

let path = String.raw`C:\path\to\directory\`
  

未捕获的SyntaxError:未终止的模板文字

暂时,我使用这种方法。

let path = String.raw`C:\path\to\directory\ `.trimRight()

我可以使用\编写最后一个字符为String.raw的模板字符串吗?

2 个答案:

答案 0 :(得分:3)

以下是一些可能的解决方法。我最喜欢的可能是创建一个自定义模板标记dir来为您解决问题。我认为它使语法更清晰,更具语义性。

let path

// Uglier workarounds
path = String.raw `C:\path\to\directory${`\\`}`
path = String.raw `C:\path\to\directory`+`\\`
path = `C:\\path\\to\\directory\\`

// Cleanest solution
const dir = ({raw}) => raw + `\\`

path = dir `C:\path\to\directory`

console.log(path)

答案 1 :(得分:0)

根据PHP bug-tracker,除了模板字符串中的\ $ \ {和\`之外,转义序列保持不变。因此,人们无法摆脱逃避角色。基于此,看起来您的解决方案是实现目标的最佳方式。