首页 > 试题广场 >

字符串命名转换

[编程题]字符串命名转换
  • 热度指数:2453 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:
 - 全部首字母大写
 - 第一个单词首字母小写,其余单词首字母大写
 - 单词全部小写,由下划线连接
 - 单词全部小写,由减号连接

请设计并实现一个caseTransform函数,使得一个字符串str可以被方便地转成四种形式,并且将四种形式通过空格拼接成一个字符串返回
为方便起见,这里假设输入字符串全部符合以上四种形式的英文字母组合

输入描述:
PascalCaseTest


输出描述:
PascalCaseTest  pascalCaseTest  pascal_case_test pascal-case-test
示例1

输入

PascalCaseTest

输出

PascalCaseTest pascalCaseTest pascal_case_test pascal-case-test
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        //输入字符串
        String s = sc.nextLine();

        //对输入的字符串在大写字母或-或_前进行添加空格修改,为接下来分割做准备
        StringBuilder sb = new StringBuilder();
        for(int i=1; i<s.length(); i++){
            if(i<s.length()-1) {
                if ((s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')||(s.charAt(i)=='-')||(s.charAt(i)=='_')){
                    String sr = s.substring(0, i);
                    sb.append(sr).append(" ");
                    s = s.substring(i);
                    i = 1;
                }
            }else if(i==s.length()-1){
                sb.append(s);
            }
        }
        String sbss = sb.toString();
        String[] st = sbss.split(" -| _|\\s");

        int len = st.length;

        //需要输出的第一个字符串
        StringBuilder sb1 = new StringBuilder();
        for(int i=0; i<len; i++){
            int lenn = st[i].length();
            char c1 = Character.toUpperCase(st[i].charAt(0));
            String sc1 = st[i].substring(1,lenn);
            sb1.append(c1).append(sc1);
        }
        String sb11 = sb1.toString();

        //需要输出的第二个字符串
        String[] st1 = new String[len];
        for(int i=0; i<len; i++){
            st1[i] = st[i].toLowerCase();
        }

        StringBuilder sb2 = new StringBuilder();
        sb2.append(st1[0]);
        for(int i=1; i<len; i++){
            int lenn2 = st[i].length();
            char c12 = Character.toUpperCase(st[i].charAt(0));
            String sc2 = st[i].substring(1,lenn2);
            sb2.append(c12).append(sc2);
        }
        String sb22 = sb2.toString();

        //需要输出的第三个字符串
        StringBuilder sb3 = new StringBuilder();
        for(int i=0; i<len; i++){
            if(i<len-1)
                sb3.append(st1[i]).append("_");
            if(i==len-1)
                sb3.append(st1[i]);
        }
        String sb33 = sb3.toString();

        //需要输出的第四个字符串
        StringBuilder sb4 = new StringBuilder();
        for(int i=0; i<len; i++){
            if(i<len-1)
                sb4.append(st1[i]).append("-");
            if(i==len-1)
                sb4.append(st1[i]);
        }
        String sb44 = sb4.toString();

        //输出结果
        System.out.println(sb11+" "+sb22+" "+sb33+" "+sb44);

    }
}

发表于 2022-03-20 16:52:03 回复(0)
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.EOFException;
/*
 - 全部首字母大写
 - 第一个单词首字母小写,其余单词首字母大写
 - 单词全部小写,由下划线连接
 - 单词全部小写,由减号连接
*/
public class Main{
    public static void main(String args[]) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
//解析输入用空格将每个单词隔开
        StringBuilder ans = new StringBuilder();
        ans.append(s.charAt(0));
        for(int i = 1;i < s.length();i++){
            if(Character.isUpperCase(s.charAt(i))){
                ans.append(' ').append(s.charAt(i));
            }else if(s.charAt(i) == '_' || s.charAt(i) == '-'){
                ans.append(' ').append(Character.toUpperCase(s.charAt(i+1)));
                i++;
            }else{
                ans.append(s.charAt(i));
            }
        }
        String str1 = ans.toString().replaceAll(" ","");
        String str2 = ans.toString();
        String s1 = str1.substring(0,1).toUpperCase() + str1.substring(1);
        String s2 = str1.substring(0,1).toLowerCase() + str1.substring(1);
        String s3 = str2.toLowerCase().replaceAll(" ","_");
        String s4 = str2.toLowerCase().replaceAll(" ","-");
        System.out.print(s1 + " " + s2 + " " + s3 + " " + s4);
    }
}
发表于 2021-07-17 16:52:18 回复(1)