用户输入的样本数据。
- 预订/${mm}/${yyyy}
- ${yyyy}/booking/${mm}
- 预订/${mm}${yyyy}/00
我的问题是如何取出 ${ } 并阅读其中包含的内容,然后根据格式替换为月/年。
所以保存到数据库后输出应该是“booking/10/2013”。
我正在使用 Grails。希望能用Java/groovy解决这个问题。
用户输入的样本数据。
我的问题是如何取出 ${ } 并阅读其中包含的内容,然后根据格式替换为月/年。
所以保存到数据库后输出应该是“booking/10/2013”。
我正在使用 Grails。希望能用Java/groovy解决这个问题。
我只是解决问题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;
}
}
您可以使用 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