gpt4 book ai didi

java - 使用嵌入数字规范化字符串

转载 作者:行者123 更新时间:2023-12-02 11:45:40 26 4
gpt4 key购买 nike

我有许多文件夹(200 多个),其格式为字符与数字混合,例如:

california1
california2_scenes
california11
california12_people
utah8
utah3_tounament

命名遵循以下约定:

  • 以字符串开头
  • 后跟 1 或 2 位数字
  • 后面可以选择下划线和其他字符(这次没有数字)

我正在编写一个 Java 命令工具,通过零填充来以更统一的方式重命名它们

california01
california02_scenes
california11
california12_people
utah08
utah03_tounament

我尝试使用正则表达式来搜索单个数字并替换:

name.replaceAll("(\\d)", "\\1");

由于以下几个原因,上述方法不起作用:

  1. 该模式与 1 位数和 2 位数数字匹配。我只想匹配一个数字
  2. Java 无法理解 \\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

关于java - 使用嵌入数字规范化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com