模式字符串格式

时间:2012-11-07 10:27:12

标签: coffeescript

可以像这样格式化字符串:

text = 'text'
formatted = "Text: #{text}"

以下情况如何?

pattern = "Text: #{text}"
text = 'text'
formatted = ???

2 个答案:

答案 0 :(得分:7)

coffeescript中的模式格式是coffeescript-> javascript编译器的一部分。

所以,

pattern = "Text: #{text}"

立即编译成

pattern = "Text: " + text;

这就是为什么

pattern = "Text: #{text}"
text = 'text'

将抛出错误“文本未定义”。

但你可以将它包装在这样的函数中:

pattern = (text) -> "Text: #{text}"
text = 'text'
formatted = pattern text

或者像这样:

pattern = ({text1, text2, text3}) -> "Text: #{text1}, #{text2} and #{text3}"
text1 = 'text'
text2 = 'awesome text'
text3 = 'another text'
formatted = pattern {text1, text2, text3}

答案 1 :(得分:-1)

不,字符串插值语法不能像那样工作。 这可能是实现完全相同的更好方法:

pattern = 'Text: #{text}'
text = 'text'
formatted = pattern.replace /#{text}/, text