java 字符串中含有{#XXX} 正则表达式预处理字符串 替换成时间
时间: 2024-09-10 17:03:07 浏览: 70
在Java中,如果你想将字符串中的特定格式的占位符(例如 `{#XXX}`)替换为当前时间,你可以使用正则表达式结合 `Pattern` 和 `Matcher` 类,或者使用更简便的 `String` 类的 `replaceAll` 方法来完成这个任务。
以下是一个简单的例子,展示了如何使用正则表达式和 `replaceAll` 方法来替换字符串中符合 `{#XXX}` 格式的占位符为当前时间:
```java
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
String input = "今天的日期是:{#DATE},时间是:{#TIME}。";
// 创建一个简单的日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
// 获取当前日期和时间
String currentDate = dateFormat.format(new Date());
String currentTime = timeFormat.format(new Date());
// 创建一个正则表达式来匹配格式 {#XXX}
Pattern pattern = Pattern.compile("\\{#(\\w+)\\}");
Matcher matcher = pattern.matcher(input);
// 使用replaceAll方法进行替换
String result = matcher.replaceAll(match -> {
// 根据括号中的内容来获取相应的日期或时间
String type = match.group(1);
switch (type) {
case "DATE":
return currentDate;
case "TIME":
return currentTime;
default:
// 如果没有匹配到,则返回原字符串
return match.group();
}
});
System.out.println(result);
}
}
```
在这个例子中,我们首先定义了日期和时间的格式化对象,然后创建了一个正则表达式来查找形如 `{#XXX}` 的模式,其中 `XXX` 是我们要匹配的标识(如 `DATE` 或 `TIME`)。在 `replaceAll` 方法中,我们提供了一个 lambda 表达式来决定如何替换每个匹配。如果匹配的标识是 `DATE`,就用当前日期替换;如果是 `TIME`,就用当前时间替换;否则,保留原字符串。
阅读全文