java - 命名消息参数

标签 java messageformat

在这种情况下,我经常使用 MessageFormat 作为索引参数:

String text = MessageFormat.format("The goal is {0} points.", 5);

现在我遇到了一种情况,我需要处理以下格式的消息:

"The {title} is {number} points."

因此,值不再被索引,占位符是字符串。我该如何处理这种情况并具有与 MessageFormat 相同的功能?如果参数未索引,MessageFormat 会抛出解析异常。

谢谢。

最佳答案

一个简单的建议包括用正则表达式匹配替换作为索引的文本参数,然后像平常一样使用它。这是一个例子:

int paramIndex = 0;

String text = "The {title} is {number} points.";
String paramRegex = "\\{(.*?)\\}";
Pattern paramPattern = Pattern.compile(paramRegex);
Matcher matcher = paramPattern.matcher(text);

while(matcher.find())
    text = text.replace(matcher.group(), "{" + paramIndex++ + "}");

text = MessageFormat.format(text, "kick", "3");

在这种情况下,text 将等于最后的“踢球为 3 分”。

关于java - 命名消息参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160492/

相关文章:

java - 如何使用 JTable 使用 MessageFormat 打印多个标题行

java - 使用 MessageFormat 转义双引号

java - 如何判断一个字符串是否只包含0到9而没有其他字符

java - 在运行时查找 java 类依赖项

java - 找不到亚马逊凭据方法

Java MessageFormat 空值

java - 在Struts中,如何从ResourceBundle中选取ActionMessage中的 'replacement values for message'

java - 抽屉导航监听器不在 fragment 中工作

java - IIS 版本 10,带有运行 JSP/Servlet 的应用程序服务器

java - 有没有办法在 ICU MessageFormat 和 Gettext Po 之间相互转换?