使用 resValue 从 build.gradle 生成包含 % 的字符串资源
Generate a string resource containing % from build.gradle with resValue
我的 build.gradle 中有一个自定义任务,它生成一些字符串资源:
android.defaultConfig.resValue "string", "my_string", "Some Value"
一切正常:字符串在 generated.xml 中正确显示,并且可通过应用程序代码中的 getResources().getString(R.id.my_string)
访问。
当其中一个字符串包含 %
符号时,它不起作用。它给出了这个错误:
Error:(1) Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
我从 Android XML Percent Symbol 了解到,对于 strings.xml 中的字符串资源,通常可以解决这个问题,方法是提供额外的 formatted="false"
属性如下:
<string formatted="false">My string with a % symbol</string>
当在构建脚本中使用 resValue
生成字符串时,如何包含 formatted="false"
属性?
(我也尝试过按照建议使用双 % 进行转义,但这会导致 %%
出现在最终字符串中。)
您可以在 xml
中使用 %
在你的 xml
中尝试这种格式 \%%
<string name="foo">percent symbol 50\%% </string>
我通过在 gradle 任务中的字符串生成时将原始 %
符号替换为双重转义的 unicode 值来解决它。
android.defaultConfig.resValue "string", "my_string", \
"String with a % symbol".replaceAll("%","\\u0025")
我的 build.gradle 中有一个自定义任务,它生成一些字符串资源:
android.defaultConfig.resValue "string", "my_string", "Some Value"
一切正常:字符串在 generated.xml 中正确显示,并且可通过应用程序代码中的 getResources().getString(R.id.my_string)
访问。
当其中一个字符串包含 %
符号时,它不起作用。它给出了这个错误:
Error:(1) Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
我从 Android XML Percent Symbol 了解到,对于 strings.xml 中的字符串资源,通常可以解决这个问题,方法是提供额外的 formatted="false"
属性如下:
<string formatted="false">My string with a % symbol</string>
当在构建脚本中使用 resValue
生成字符串时,如何包含 formatted="false"
属性?
(我也尝试过按照建议使用双 % 进行转义,但这会导致 %%
出现在最终字符串中。)
您可以在 xml
中使用 %在你的 xml
中尝试这种格式 \%%<string name="foo">percent symbol 50\%% </string>
我通过在 gradle 任务中的字符串生成时将原始 %
符号替换为双重转义的 unicode 值来解决它。
android.defaultConfig.resValue "string", "my_string", \
"String with a % symbol".replaceAll("%","\\u0025")