【发布时间】:2011-10-26 05:59:45
【问题描述】:
我有一串如下格式
Select * where {{0} rdfs:label "Aruba" } limit 10
现在我想用一些新文本替换 {0},但问题是由于第一个大括号,消息格式无法解析字符串。我知道如果我使用 '{' 它会转义它,但问题是我有大量此类字符串,我无法在大括号前后手动添加单引号。即使我编写了一个函数来执行此操作,它也会转义占位符 {0} 的大括号。
它们是消息格式的更好替代方案,例如 ruby 字符串插值。 我只是想要一种编写字符串模板的方法,我可以用新字符串替换某些部分
【问题讨论】:
-
现在我的代码是这样的:NewString=OlString.replace("{0}", "Value");...这是一种低效的方法吗?
-
您是说您有一个不是有效 MessageFormat 的字符串(由于未转义的
{}字符)但包含 MessageFormat 样式参数。此处发布的答案(包括您自己的答案)可能足以解决您的用例,但我不得不问这些格式错误的字符串最初是如何产生的?无论创建它们的人或进程都应该提供有效的 MessageFormat 字符串(也许您应该提供一个验证器);这比事后尝试修改字符串要强大得多。
标签: java escaping string-interpolation messageformat