如何在Android中编程创建字符串占位符并完成赋值
手动填充字符串占位符的实现方案
直接使用JDK提供的String.format()方法即可完成需求,不需要依赖resources.getString()的资源ID参数。实际上系统resources.getString(@StringRes int id, Object... formatArgs)的内部逻辑,就是先根据ID读取字符串模板,再调用String.format填充参数,二者效果完全一致。
Kotlin 代码示例
基础用法
// 自定义带占位符的字符串模板 val template = "Stranka sa zatvori za %d s" // 按顺序传入对应类型的参数完成填充 val formattedStr = String.format(template, remainingSeconds) // 赋值给控件 snackbarTextView.text = formattedStr
本地化适配写法(推荐)
如果应用需要适配多语言,建议传入当前系统Locale,避免不同地区的数字、时间格式出现异常:
import java.util.Locale val template = "Stranka sa zatvori za %d s" val formattedStr = String.format(Locale.getDefault(), template, remainingSeconds) snackbarTextView.text = formattedStr
Java 代码示例
String template = "Stranka sa zatvori za %d s"; String formattedStr = String.format(template, remainingSeconds); snackbarTextView.setText(formattedStr); // 本地化适配写法 // String formattedStr = String.format(Locale.getDefault(), template, remainingSeconds);
注意事项
- 占位符规则和资源字符串中使用的规则完全一致:
%d对应整数、%s对应字符串、%f对应浮点数 - 支持带位置索引的占位符,例如模板写为
"用户%1$s的等级为%2$d",可以灵活调整参数顺序,适配多语言翻译场景 - 传入参数的数量、类型需要和占位符一一对应,否则会抛出格式化异常
内容的提问来源于stack exchange,提问作者Kratos
相关产品推荐
相关产品推荐

