替换String的部分内容

时间:2018-04-30 10:31:47

标签: java string

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

1 个答案:

答案 0 :(得分:0)

Java中没有标准库可以做到这一点。 (有第三方库;例如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).
    

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