不久前看到一道华为面试题,写一个字符串大小写转换的方法,例如输入AbcdEFg*^%hiJ@%K
输出aBCDefG*^%HIj@%k,自己写了一个玩玩,菜鸟一枚,可能有更好的写法请指教。
public String exchangeString(String str) throws Exception {
int dif = 'a'-'A';
System.out.println(dif);
char[] strList= str.toCharArray();
StringBuffer result = new StringBuffer();
for(char eachStr : strList ){
String s = String.valueOf(eachStr);
if(isSpecialChar(s)){
result.append(eachStr);
continue;
}
int eachValue = Integer.valueOf(eachStr);
if(eachValue!=0){
if(eachValue<'a'){
eachValue+=dif;
}
if(eachValue>'Z'){
eachValue-=dif;
}
}
System.out.println(eachValue);
result.append((char)(eachValue));
}
return result.toString();
}
public static boolean isSpecialChar(String str) {
String regEx = "[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.find();
}