字符串命名转换
孔乙己说“回”字有四种写法,编程语言中常见的命名风格有如下四种:
- 全部首字母大写
- 第一个单词首字母小写,其余单词首字母大写
- 单词全部小写,由下划线连接
- 单词全部小写,由减号连接
请设计并实现一个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;
}
}