Java变量驼峰法转下滑线

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。

直接上代码

// 本题为考试单行多行输入输出规范示例,无需提交,不计分。
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        String[] array=new String[1000];
        for(int i=0;i<a;i++){
            array[i]=in.next();
        }
        for(int i=0;i<a;i++){
            System.out.println(camel2Underline(array[i]).trim());
        }
    }
    public static String camel2Underline(String line){
        if(line==null||"".equals(line)){
            return "";
        }
        String rs="";
        for(int i=1;i<line.length();i++) {
            char c = line.charAt(i);
            char c_1 = line.charAt(i-1);
            if((i-1)==0&&Character.isUpperCase(c_1)){
                c_1=Character.toLowerCase(c_1);
            }
            if (Character.isUpperCase(c)) {
                rs=rs+c_1+"_"+Character.toLowerCase(c);
                String sub="";
                for(int j=i+1;j<line.length();j++){
                    char ch = line.charAt(j);
                    if(Character.isUpperCase(ch)){
                        sub+=Character.toLowerCase(ch);
                    }else{
                        break;
                    }
                }
                if(sub.length()>0){
                    rs=rs+sub.substring(0,sub.length()-1)+"_"+sub.charAt(sub.length()-1);
                    i=i+sub.length();
                }else{
                    i++;
                }
                continue;
            }else{
                rs+=c_1;
            }
            if(i==(line.length()-1)){
                if (Character.isUpperCase(c)) {
                    rs=rs+"_"+Character.toLowerCase(c);;
                }else{
                    rs+=c;
                }
            }
            //System.out.println(rs);
            //System.out.println(i);
        }
        return rs;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS技术杂谈

iOS runtime探究(四): 从runtiem开始实践Category添加属性与黑魔法method swizzling你要知道的runtime都在这里

你要知道的runtime都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本文主要讲解...

3406
来自专栏Crossin的编程教室

17个新手常见 Python 运行时错误

当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1)忘记在 if ,...

3846
来自专栏me的随笔

Python知识梳理

我们可以使用type()函数类获取对象的类型,Python3中内置数据类型包括:None,int,float,complex,str,list,dict,tup...

1512
来自专栏我是攻城师

Apache Pig学习笔记之内置函数(三)

4424
来自专栏开发与安全

《linux c 编程一站式学习》课后部分习题解答

1、假设变量x和n是两个正整数,我们知道x/n这个表达式的结果要取Floor,例如x是17,n是4,则结果是4。如果希望结果取Ceiling应该怎么写表达式呢?...

4576
来自专栏一“技”之长

iOS中正则表达式的使用 原

正则表达式在字符串查找,替换,检测中的应用非常广泛,正则表达式是什么,有怎样的语法,我的另一篇博客中有详细的介绍:http://my.oschina.net/u...

904
来自专栏飞雪无情的博客

从Java到Golang快速入门

Golang从09年发布,中间经历了多个版本的演进,已经渐渐趋于成熟,并且出现了很多优秀的开源项目,比如我们熟知的docker,etcd,kubernetes等...

1133
来自专栏AhDung

【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码:

2933
来自专栏iOS技术杂谈

iOS block探究(二): 深入理解你要知道的block都在这里

你要知道的block都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 三种block类...

3245
来自专栏calvin

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)

路由、action的扫描、发现、注册搞定之后,后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取。同样的一行代码我们不厌其烦...

1202

扫码关注云+社区

领取腾讯云代金券