作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一条消息要放入 HTML 页面,我希望它对打印的内容数量敏感。 java.text.ChoiceFormat
去救援,对吧?
text.messages=You have {0,choice,1#<b>one</b> message|1<<b>{0}</b> messages} waiting for you
这会导致 ChoiceFormat
中出现错误的构造函数:
java.lang.IllegalArgumentException: Choice Pattern incorrect: 1#<b>one</b> message|1<'<b>'{0}'</b>' messages
我已将问题缩小到 <
消息中的符号。没问题:我会使用 MessageFormat
的引用功能来解决这个问题:
text.messages=You have {0,choice,1#'<b>'one'</b>' message|1<'<b>'{0}'</b>' messages} waiting for you
不幸的是,这也失败了:
java.lang.IllegalArgumentException: Choice Pattern incorrect: 1#<b>one</b> message|1<''<b>''{0}''</b>'' messages
请注意错误消息中的单引号字符(MessageFormat
的转义字符)是如何加倍的。我觉得我很接近,但我似乎找不到任何解释如何使用特殊字符的文档,如 <
在ChoiceFormat
模式。
这是我在失败时得到的完整堆栈跟踪:
Caused by: java.lang.IllegalArgumentException: Choice Pattern incorrect: 1#''<b>''one''</b>'' message|1<''<b>''{0}''</b>'' messages
at java.text.MessageFormat.makeFormat(MessageFormat.java:1519)
at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
at java.text.MessageFormat.<init>(MessageFormat.java:362)
at org.apache.struts.util.MessageResources.getMessage(MessageResources.java:305)
at org.apache.velocity.tools.struts.MessageTool.get(MessageTool.java:158)
at org.apache.velocity.tools.struts.MessageTool.get(MessageTool.java:125)
at org.apache.velocity.tools.struts.MessageTool.get(MessageTool.java:192)
[...]
最佳答案
你走在正确的轨道上,但没有引用所有的:
text.messages=You have {0,choice,1#'<b>'one'</b>' message|1<'<b>'{0}'</b>' messages} waiting for you
或者:
text.messages=You have {0,choice,1#'<b>one</b> message'|1<'<b>'{0}'</b> messages'} waiting for you
关于java - 如何将小于号放入 ChoiceFormat 模式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044695/
我已经用 Java 编程很多年了,我知道如何做比这复杂得多的事情,但我一辈子都不知道如何做到这一点。不管你相信与否,我在网络上找不到任何可以告诉我如何做的地方。 我正在显示存储在变量中的字符串,并且我
我有一些通过文本区域获得的输入,我将该输入转换为 html 文档,随后将其解析为 PDF 文档。 当我的用户输入小于号 ( 如果我只是添加 它会变得更好一点 htmlDocument.OptionOu
我是一名优秀的程序员,十分优秀!