如何在此符号$ {}中查找,删除和阅读文本

时间:2013-10-29 02:42:32

标签: groovy

用户输入示例数据。

  1. 预订/ $ {毫米} / $ {YYYY}
  2. $ {YYYY} /预订/ $ {毫米}
  3. 预订/ $ {毫米} $ {YYYY} / 00
  4. 我的问题是如何取出$ {}并阅读其中包含的内容,然后根据格式替换月/年。

    因此保存到数据库后输出应为“booking / 10/2013”​​。

    我正在使用Grails。希望可以使用Java / groovy来解决这个问题。

2 个答案:

答案 0 :(得分:0)

我刚刚解决问题enter code here

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
public static void main(String[] args) {
    String bookingNo1 = "booking/${mm}/${yyyy}";
    String bookingNo2 = "${yyyy}/booking/${mm}";
    String bookingNo3 = "booking/${mm}${yyyy}/00";
    String newDate = null;
    newDate = getDataString(bookingNo1);
    System.out.println(newDate);
    newDate = getDataString(bookingNo2);
    System.out.println(newDate);
    newDate = getDataString(bookingNo3);
    System.out.println(newDate);
}

public static String getTimeString(String pattern) {
    SimpleDateFormat format = new SimpleDateFormat();
    format.applyPattern(pattern);
    return format.format(new Date());
}

public static String getDataString(String dateInput) {
    String dateString = dateInput;

    String regex = "\\$\\{(mm|yyyy|DD|MM)\\}";

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(dateInput);

    while (matcher.find()) {
        String datePattern = matcher.group()
                .replaceAll("(\\$|\\{|\\})", "");
        dateString = dateString.replaceAll("\\$\\{" + datePattern + "\\}",
                getTimeString(datePattern));
    }
    return dateString;
}

}

答案 1 :(得分:0)

您可以使用Groovy执行此操作:

// Given these inputs
def inputs = [ 'booking/${mm}/${yyyy}',
               '${yyyy}/booking/${mm}',
               'booking/${mm}${yyyy}/00' ]

// Make a binding for 'mm' and 'yyyy'
def date = new Date()
def binding = [ mm   : date.format( 'MM' ),
                yyyy : date.format( 'yyyy' ) ]

// Then process each input with STE and print it out
inputs.each { input ->
    println new groovy.text.SimpleTemplateEngine()
                           .createTemplate( input )
                           .make( binding )
}

打印:

booking/10/2013
2013/booking/10
booking/102013/00