java - 替换字符串的一部分
问题描述
我需要找到像"${someName}"
Java 中的字符串这样的表达式,并用一些值替换它们。目前,我正在使用StringBuilder
它的indexOf()
和replace()
方法来实现相同的目标。但我想知道使用正则表达式而不是所有这些是否会是更好的方法。
解决方案
Java 中没有标准库可以做到这一点。(有第 3 方库;例如Freemarker。)
如果您准备好更改模式语法,我将建议您可以使用 Java SE 库中的几个替代方案。
该类
Formatter
(和相应的String.format(...)
快捷方法)会将参数替换为格式字符串,同时执行各种值到文本的转换。它支持编号和未编号的位置替换。例如(取自 javadoc):formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
生产
" d c b a"
该类
MessageFormat
具有更简单(更清晰)的语法。例如(取自 javadoc):int fileCount = 1273; String diskName = "MyDisk"; Object[] testArgs = {new Long(fileCount), diskName}; MessageFormat form = new MessageFormat( "The disk \"{1}\" contains {0} file(s)."); System.out.println(form.format(testArgs));
产生如下输出:
The disk "MyDisk" contains 0 file(s). The disk "MyDisk" contains 1 file(s). The disk "MyDisk" contains 1,273 file(s).
它还可以进行值转换和格式化,甚至还有一种方法可以进行条件(选择)格式。
推荐阅读
- html - Mac 与 Windows 上的 Chrome 的 rem 计算在字体大小和行高之间的差异?
- c# - 从datagridview c#加载图像
- go - golang中值类型/指针类型的区别
- php - 我无法用 php 更新我的数据库
- javascript - 使用新的浏览器窗口来控制/显示父窗口上的元素
- java - 使用 Apache Spark 更新一个巨大的文本文件
- android - Android:以低质量拍照
- javascript - 分配包含“id”的ajax html响应内容不能被触发?
- abap - 从 DB 中选择畅销书
- linux-from-scratch - 在 LFS 上对 libffi 的测试失败