我在自己的strings.xml文件中定义一个字符串:
<string name="unformatted_string">Here\'s a song I\'ve created just for you\! {0}</string>
然后获取该字符串,并使用MessageFormat.format将{0}替换为URL:
String str = MessageFormat.format(getString(R.string.unformatted_string), url);
当我打印str时,我看到了:
Heres a song Ive created just for you http://www.google.com
MessageFormat documentation指出引号的规则有些混乱,然后继续仅提供一个仅使用双引号的示例。通过阅读文档,似乎可以通过使用'''解决我的单引号问题:
<string name="unformatted_string">Here'''s a song I'''ve created just for you\! {0}</string>
但是Android资源打包步骤会引发错误,因为我的撇号前面没有
\
。我唯一的要求是在strings.xml中定义字符串(以支持本地化)。
最佳答案
该文件是android resoure文件,该文件要求每个撇号都使用前面的backslah进行转义。 MessageFormat要求将模式中的每个撇号都加倍。因此,您需要两个转义的撇号:
<string name="unformatted_string">Here\'\'s a song I\'\'ve created just for you\! {0}</string>