如何修改Intl MessageFormat的引号解析行为以实现预期输出?
问题解答
Intl MessageFormat 遵循 ICU MessageFormat 标准语法,无法直接修改引号的解析行为——单引号的核心作用就是转义花括号等特殊语法字符,避免其被解析为变量或指令。
要实现你预期的「变量值被单引号包裹」的效果,只需调整消息字符串的写法,推荐以下标准方式:
正确写法示例
const msg = new IntlMessageFormat("Email: ''{email}''").format({email: "test@email.com"}) // 输出结果:Email: 'test@email.com'
原理说明
在 ICU 语法中,两个连续的单引号''会被解析为一个字面量单引号,而未被单引号包裹的{email}会正常识别为变量并替换。
你之前的写法"Email: '{email}'"之所以输出Email: {email},是因为单引号包裹了{email},触发了语法转义规则,这部分内容被当作纯文本字面量处理,不会解析变量。
内容的提问来源于stack exchange,提问作者skizzo
相关产品推荐
相关产品推荐

