字符串命名转换

孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:

  • 全部首字母大写
  • 第一个单词首字母小写,其余单词首字母大写
  • 单词全部小写,由下划线连接
  • 单词全部小写,由减号连接

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

  1. import java.util.*;
  2. public class Main{
  3. public static void main(String[] args){
  4. Scanner sc = new Scanner(System.in);
  5. String str = sc.nextLine();
  6. for(String res : caseTransform(str)){
  7. System.out.print(res + " ");
  8. }
  9. }
  10. public static List<String> caseTransform(String str){
  11. int start = 0;
  12. StringBuilder str1 = new StringBuilder();
  13. StringBuilder str2 = new StringBuilder();
  14. StringBuilder str3 = new StringBuilder();
  15. StringBuilder str4 = new StringBuilder();
  16. List<String> list = new ArrayList<>();
  17. List<String> ans = new ArrayList<>();
  18. for(int i = 1; i < str.length(); i++){
  19. char c = str.charAt(i);
  20. if(c == '_' || c == '-'){
  21. list.add(str.substring(start,i));
  22. start = ++i;
  23. }else if(c >= 'A' && c <= 'Z'){
  24. list.add(str.substring(start,i));
  25. start = i;
  26. }
  27. }
  28. list.add(str.substring(start));
  29. for(int i = 0; i < list.size(); i++){
  30. String unitStr = list.get(i);
  31. str1.append(Character.toUpperCase(unitStr.charAt(0))).append(unitStr.substring(1));
  32. if(i == 0){
  33. str2.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));
  34. }else{
  35. str2.append(Character.toUpperCase(unitStr.charAt(0))).append(unitStr.substring(1));
  36. }
  37. str3.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));
  38. str4.append(Character.toLowerCase(unitStr.charAt(0))).append(unitStr.substring(1));
  39. if(i != list.size()-1){
  40. str3.append("_");
  41. str4.append("-");
  42. }
  43. }
  44. ans.add(str1.toString());
  45. ans.add(str2.toString());
  46. ans.add(str3.toString());
  47. ans.add(str4.toString());
  48. return ans;
  49. }
  50. }