You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java/Kotlin中无法格式化从文件读取的字符串模板问题求助

问题分析与解决方案

嘿,我来帮你搞定这个格式化失效的问题!你的代码里有两个关键问题导致模板没被正确格式化:

1. 占位符语法不匹配

你用了MessageFormat.format(),但模板里写的%s%d是**String.format()专用的占位符**,而MessageFormat认的是{0}{1}这种按索引排序的占位符({0}对应第一个参数,{1}对应第二个,以此类推)。

2. 没接收格式化后的结果

MessageFormat.format()(包括String.format())都是返回新的格式化字符串,不会修改原来的template变量。你直接打印原变量,自然还是未格式化的内容。


给你两种解决方案,选哪种看你的需求:

方案一:保留原占位符,改用String.format()

如果不想修改文件里的模板,直接用String.format()就能完美适配%s(字符串占位)、%d(数字占位)的语法:

var template = File("file_path").readText();
// 把格式化后的结果存到新变量里
var formattedText = String.format(template, "Bod", 123);
print(formattedText);

方案二:调整模板,继续用MessageFormat

如果要坚持用MessageFormat(比如后续有国际化需求),先把文件里的模板改成:

Name: {0} Age: {1}

然后代码调整为:

var template = File("file_path").readText();
var formattedText = MessageFormat.format(template, "Bod", 123);
print(formattedText);

小补充:MessageFormat更适合多语言场景,能根据不同地区自动调整参数顺序;如果只是普通的字符串拼接格式化,String.format()会更轻便直观~

内容的提问来源于stack exchange,提问作者CoXier

火山引擎 最新活动