我有许多文件夹(200+),这些文件夹的格式是用数字混合的字符,例如:
california1
california2_scenes
california11
california12_people
utah8
utah3_tounament
命名遵循以下约定:
我正在编写一个Java命令工具,通过零填充
以更统一的方式重命名它们california01
california02_scenes
california11
california12_people
utah08
utah03_tounament
我尝试使用正则表达式搜索单个数字并替换:
name.replaceAll("(\\d)", "\\1");
由于以下几个原因,上述方法无效:
\\1
代表第一个匹配组的符号。我也尝试使用直接替换来解决这个问题:
name = name.replaceAll("1_", "01_"). ... .replaceAll("9_", "09_");
此方法同样不区分单位和双位数字,并且对于单个数字位于字符串末尾的情况不起作用。
我感谢任何帮助。
答案 0 :(得分:1)
String[] as = { "california1", "california2_scenes", "california11", "california12_people", "utah8",
"utah3_tounament" };
for (String s : as) {
//no number behind, number, no number ahead
String sp = "(?<!\\d)\\d(?!\\d)";
Pattern p = Pattern.compile(sp);
System.out.println(s);
System.out.println(s.replaceAll(sp, "0$0"));
}
输出:
california1
california01
california2_scenes
california02_scenes
california11
california11
california12_people
california12_people
utah8
utah08
utah3_tounament
utah03_tounament