不久前看到一道华为面试题,写一个字符串大小写转换的方法,例如输入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(); }