字符串命名转换
孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:
- 全部首字母大写
- 第一个单词首字母小写,其余单词首字母大写
- 单词全部小写,由下划线连接
- 单词全部小写,由减号连接
请设计并实现一个caseTransform函数,使得一个字符串str可以被方便地转成四种形式,并且将四种形式通过空格拼接成一个字符串返回
为方便起见,这里假设输入字符串全部符合以上四种形式的英文字母组合
import java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);String str = sc.nextLine();for(String res : caseTransform(str)){System.out.print(res + " ");}}public static List<String> caseTransform(String str){int start = 0;StringBuilder str1 = new StringBuilder();StringBuilder str2 = new StringBuilder();StringBuilder str3 = new StringBuilder();StringBuilder str4 = new StringBuilder();List<String> list = new ArrayList<>();List<String> ans = new ArrayList<>();for(int i = 1; i < str.length(); i++){char c = str.charAt(i);if(c == '_' || c == '-'){list.add(str.substring(start,i));start = ++i;}else if(c >= 'A' && c <= 'Z'){list.add(str.substring(start,i));start = i;}}list.add(str.substring(start));for(int i = 0; i < list.size(); i++){String unitStr = list.get(i);str1.append(Character.toUpperCase(unitStr.charAt(0))).append(unitStr.substring(1));if(i == 0){str2.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));}else{str2.append(Character.toUpperCase(unitStr.charAt(0))).append(unitStr.substring(1));}str3.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));str4.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));if(i != list.size()-1){str3.append("_");str4.append("-");}}ans.add(str1.toString());ans.add(str2.toString());ans.add(str3.toString());ans.add(str4.toString());return ans;}}
