首页 > 解决方案 > 替换字符串的一部分

问题描述

我需要找到像"${someName}"Java 中的字符串这样的表达式,并用一些值替换它们。目前,我正在使用StringBuilder它的indexOf()replace()方法来实现相同的目标。但我想知道使用正则表达式而不是所有这些是否会是更好的方法。

标签: javastring

解决方案


Java 中没有标准库可以做到这一点。(有第 3 方库;例如Freemarker。)

如果您准备好更改模式语法,我将建议您可以使用 Java SE 库中的几个替代方案。

  1. 该类Formatter(和相应的String.format(...)快捷方法)会将参数替换为格式字符串,同时执行各种值到文本的转换。它支持编号和未编号的位置替换。例如(取自 javadoc):

     formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
    

    生产

     " d  c  b  a"
    
  2. 该类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).
    

    它还可以进行值转换和格式化,甚至还有一种方法可以进行条件(选择)格式。


推荐阅读