gpt4 book ai didi

java - 如何在java中将camelCase字符串转换为下划线,保留一些大写,其余的小写?

转载 作者:行者123 更新时间:2023-12-01 23:27:02 25 4
gpt4 key购买 nike

如何在java中将驼峰式字符串转换为下划线并保留一些大写字母?我正在使用这段代码:

String inputString = "Hi How areYouToday";
String result = inputString.replaceAll("([a-z])([A-Z]+)", "$1_$2");

我可以转换 Hi How are_You_Today 中的 inputString,但是,我需要获取 Hi How are_you_today

请注意,只有转换后的部分更改为小写版本。

最佳答案

您可以使用Matcher#appendReplacement并根据正则表达式发现的内容传递动态替换。

我还稍微更改了您的正则表达式,以便在匹配中不包含小写部分,但仅接受前面有小写字符的大写字符。更多信息:http://www.regular-expressions.info/lookaround.html

String text = "Hi How areYouToday";
Matcher m = Pattern.compile("(?<=[a-z])[A-Z]").matcher(text);

StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "_"+m.group().toLowerCase());
}
m.appendTail(sb);

System.out.println(sb.toString()); //Hi How are_you_today
<小时/>

或者从 Java 9 开始

Matcher m = Pattern.compile("(?<=[a-z])[A-Z]").matcher(text);
String result = m.replaceAll(match -> "_" + match.group().toLowerCase());

因为构造

StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb, /*replacement for each match*/);
}
m.appendTail(sb);
String result = sb.toString();

被包裹成Matcher#replaceAll​(Function replacer)所以它可以用作

String result = m.replaceAll( (MatchResult match) -> /*replacement for each match*/ );

关于java - 如何在java中将camelCase字符串转换为下划线,保留一些大写,其余的小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40050601/

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