gpt4 book ai didi

java - 正则表达式替换替换字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:10 24 4
gpt4 key购买 nike

让我们考虑以下示例:

String s = str.replaceAll("regexp", "$1");

某些语言允许我们指定 \U$1 代替 $1 ,这会将匹配的组转换为大写字母。我如何使用 Java 实现同样的目标?

我知道我们可以使用 Pattern 类并获取组并将其转换为大写,但这不是我想要的。我只想用完成工作的东西来改变 $1

我也试过:

String s = str.replaceAll("regexp", "$1".toUpperCase());

但看起来 "$1".toUpperCase()"$1" 而不是匹配项。我确认它使用:

String s = str.replaceAll("regexp", method("$1"));

// method declared as method()
private static String method(String s) {
System.out.println(s); // prints "$1"
return s;
}

在 Java 中甚至允许吗?

编辑:

String s = "abc";
System.out.println(s.replaceAll("(a)", "$1")); // should print "Abc"

编辑可能的欺骗:

我不是在寻找使用 m.group() 的方法,是否可以使用类似 \U$1 的东西代替 $1replaceAll()

最佳答案

\\U 未在 java 正则表达式 AFAIK 中实现,您不能使用这样的正则表达式(.NET 具有 IIRC)。这有点冗长,但一种方法是:

    String test = "abc";
Pattern p = Pattern.compile("(a)");
Matcher m = p.matcher(test);

StringBuilder sb = new StringBuilder();
if (m.find()) {
String match = test.substring(m.start(1), m.end(1));
m.appendReplacement(sb, match.toUpperCase());
}

m.appendTail(sb);
System.out.println(sb.toString());

关于java - 正则表达式替换替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48596870/

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