什么是predefined string format?如何在代码中应用预定义字符串格式?
predefined string format(预定义字符串格式)说明及实现
定义
预定义字符串格式是一种字符串构造方案:提前编写好带有占位符的字符串模板,运行时再把动态变量填充到对应占位符位置,相比直接用+拼接的写法,可读性更高、更易排查格式错误,也能降低符号遗漏、拼接顺序错误的概率。
针对你的代码的实现方案
你当前的URI拼接场景下,有两种常见的预定义格式实现方式:
1. Scala原生字符串插值(最推荐)
Scala内置的s插值语法本身就是预定义字符串格式的实现,写法如下:
val uri = new URI(s"$baseUrl?provider=$provider&format=$format")
其中s"..."包裹的内容就是提前定义的模板,$变量名就是占位符,编译时会自动替换为对应变量的实际值。
2. 通用String.format方案
如果需要兼容Java风格的写法,也可以用JDK内置的字符串格式化方法:
val uri = new URI(String.format("%s?provider=%s&format=%s", baseUrl, provider, format))
其中"%s?provider=%s&format=%s"就是预定义的格式模板,%s是字符串类型占位符,后续按顺序传入变量即可完成替换。
额外注意点
如果provider、format参数可能包含URL敏感字符(比如&、空格、中文等),建议先对参数做URL编码再填入模板,避免生成非法URI:
import java.net.URLEncoder import java.nio.charset.StandardCharsets val encodedProvider = URLEncoder.encode(provider, StandardCharsets.UTF_8.name()) val encodedFormat = URLEncoder.encode(format, StandardCharsets.UTF_8.name()) val uri = new URI(s"$baseUrl?provider=$encodedProvider&format=$encodedFormat")
内容的提问来源于stack exchange,提问作者user15826601
相关产品推荐
相关产品推荐

