用java如何实现字符串风格由驼峰形式转换成下划线形式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java如何实现字符串风格由驼峰形式转换成下划线形式?相关的知识,希望对你有一定的参考价值。

如把HelloWorld转化成hello_world。

public class transform 
public static String trans(String str)

List record =new ArrayList();
for(int i=0;i<str.length();i++)

char tmp =str.charAt(i);

if((tmp<='Z')&&(tmp>='A'))

record.add(i);//记录每个大写字母的位置



record.remove(0);//第一个不需加下划线

str= str.toLowerCase();
char[] charofstr = str.toCharArray();
String[] t =new String[record.size()];
for(int i=0;i<record.size();i++)

t[i]="_"+charofstr[(int)record.get(i)];//加“_”

String result ="";
int flag=0;
for(int i=0;i<str.length();i++)

if((flag<record.size())&&(i==(int)record.get(flag)))
result+=t[flag];
flag++;

else
result+=charofstr[i];


return result;


public static void main(String [] args)
String hh = "HelloWolrd";
System.out.println(trans(hh));


追问

能够给下详细解答思路呢,谢谢

追答

首先,进行一遍遍历,记录下每个大写字母的位置,第一个大写字母除外;然后,将字符串转换成为字符数组,将对应位置上的字母前加上下划线;最后,将字符串数组进行拼接,大写字母位置的字符串替换成第二步中的字符串,完成。

参考技术A 语法重构应该能解决

java实现驼峰和下划线相互转换

记录一波,工作使用到直接copy。

   /***
    * <p>
    * 将驼峰转为下划线
    * </p >
    * @param str
    * @return java.lang.String
    * @author comapss
    * @date 2022/5/9 0:01
    * @since 1.0.0
   **/
    public static String humpToUnderline(String str) 
        Pattern compile = Pattern.compile("[A-Z]");
        Matcher matcher = compile.matcher(str);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()) 
            matcher.appendReplacement(sb,  "_" + matcher.group(0).toLowerCase());
        
        matcher.appendTail(sb);
        return sb.toString();
    

 /***
  * <p>
  * 将下划线转为驼峰
  * </p >
  * @param str
  * @return java.lang.String
  * @author comapss
  * @date 2022/5/9 0:01
  * @since 1.0.0
 **/
    public static String underlineToHump(String str) 
        str = str.toLowerCase();
        Pattern compile = Pattern.compile("_[a-z]");
        Matcher matcher = compile.matcher(str);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()) 
            matcher.appendReplacement(sb,  matcher.group(0).toUpperCase().replace("_",""));
        
        matcher.appendTail(sb);
        return sb.toString();
    

以上是关于用java如何实现字符串风格由驼峰形式转换成下划线形式?的主要内容,如果未能解决你的问题,请参考以下文章

大写加下划线转化成小写驼峰形式

求助:word中将下划线的字符转成驼峰格式

怎么用java实现驼峰命名法与数据库命名法的相互转换

Spring MVC 实现 GET 请求下划线风格参数映射至驼峰风格的类

java实现驼峰和下划线相互转换

Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)