Java 使用嵌入数字规范化字符串
我有许多文件夹(200+个),其格式为字符与数字混合,例如:Java 使用嵌入数字规范化字符串,java,regex,Java,Regex,我有许多文件夹(200+个),其格式为字符与数字混合,例如: california1 california2_scenes california11 california12_people utah8 utah3_tounament 命名遵循以下约定: 从字符串开始 后跟1或2位数字 可选后跟下划线和其他字符(这次没有数字) 我正在编写一个Java命令工具,通过对 california01 california02_scenes california11 california12_peop
california1
california2_scenes
california11
california12_people
utah8
utah3_tounament
命名遵循以下约定:
- 从字符串开始
- 后跟1或2位数字
- 可选后跟下划线和其他字符(这次没有数字)
california01
california02_scenes
california11
california12_people
utah08
utah03_tounament
我尝试使用正则表达式搜索单个数字并替换:
name.replaceAll("(\\d)", "\\1");
由于以下几个原因,上述方法不起作用:
\\1
符号name = name.replaceAll("1_", "01_"). ... .replaceAll("9_", "09_");
同样,此方法不区分一位数和两位数,也不适用于一位数位于字符串末尾的情况
我很感激能得到的任何帮助
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