我有一个格式为 yy_MM_someRandomString_originalFileName 的文件名。
例子:
02_01_fEa3129E_my Pic.png
我想将前 2 个下划线替换为,/以便示例变为:
02/01/fEa3129E_my Pic.png
这可以用 replaceAll 来完成,但问题是文件也可能包含下划线。
@Test
void test() {
final var input = "02_01_fEa3129E_my Pic.png";
final var formatted = replaceNMatches(input, "_", "/", 2);
assertEquals("02/01/fEa3129E_my Pic.png", formatted);
}
private String replaceNMatches(String input, String regex,
String replacement, int numberOfTimes) {
for (int i = 0; i < numberOfTimes; i++) {
input = input.replaceFirst(regex, replacement);
}
return input;
}
我使用循环解决了这个问题,但是有没有纯正则表达式的方法来做到这一点?
编辑:这种方式应该能够让我更改参数并将下划线的数量从 2 增加到 n。
慕娘9325324
阿晨1998
相关分类