MessageFormat
问题:
未知的格式类型
MessageFormat
仅支持以下格式类型:
不成对的引号
property.key=Shouldn't happen: {0}
单引号会被解释为转义,直到属性结束,并且不会出现在结果字符串中。 在大多数情况下,这不是我们的本意。 如果结果字符串中应该出现单引号,则必须在属性中使用重复的单引号。
不匹配的大括号
每个占位符必须有一个右大括号。
引号过多
在某些情况下(例如 it's
),预期结果字符串中只有一个引号。
报告结果字符串中两个或多个引号放在一起的情况。
嵌套 ChoiceFormat
的下限不正确
下限应为数字,并按升序排序。
形参两旁的引号数量错误
在 java.text.MessageFormat
模式中,单引号用于转义。
要让引号可见,则必须使用重复的引号。
例如,在传递 1
时:
'{0}'
→ {0}
''{0}''
→ '1'
使用 choice 格式时,会将嵌套格式评估为格式字符串本身,并且引号必须重复两次。
例如,在传递 1
时:
{0, choice, 0#no|1#''{0}'' files}
→ {0} files
{0, choice, 0#no|1#''''{0}'''' files}
→ '1' files
注释
仅当属性值包含字面量文本 {0}
、{0,
、{1}
或 {1,
时,才会对其进行验证。
这是为了确保这些属性值实际上被用作 MessageFormat
模式。
2023.2 最新变化