Java中把一个字符串中的大小写字母互换

Java中把一个字符串中大写字母转换为小写,小写字母转换为大写

这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不能改变了;如果需要改变,那么应该使用StringBuffer,这个例子也能够很好的说明StringBuffer和String之间的区别!

下面的代码中exChange()能够得到正确的结论,exChange2()不能得到正确的结论,原因就是上面说的:如果某个字符串定义为String类型,那么这个串就不能改变了

//把一个字符串中的大写转为小写,小写转换为大写:思路1  
public static String exChange(String str){
    StringBuffer sb = new StringBuffer();
    if(str!=null){
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(Character.isUpperCase(c)){
                sb.append(Character.toLowerCase(c));
            }else if(Character.isLowerCase(c)){
                sb.append(Character.toUpperCase(c)); 
            }
        }
    }
      
    return sb.toString();
}
  
//把一个字符串中的大写转为小写,小写转换为大写:思路2  
public static String exChange2(String str){
    for(int i=0;i<str.length();i++){
        //如果是小写  
        if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){
            str.substring(i, i+1).toUpperCase();
        }else{
            str.substring(i, i+1).toLowerCase();
        }
    }
    return str;
}

【温馨提示】.

Apache的commons-lang包中有很多我们常用的方法.比如IO操作的中的拷贝整个目录,判断一个字符是不是符合Email的格式,判断一个字符是不是数字型.....

所以千万别什么都自己写.尽量看看在其中是不是已经有现成的方法了.

比如上面这个问题,.就可以这么写【项目中需要有commons-lang这个包,可以去http://commons.apache.org/proper/commons-lang/download_lang.cgi下载】

String str = "aBcD";
System.out.println(StringUtils.swapCase(str));

我看了源码:StringUtils.swapCase(str)这个方法的实现其实跟第一种差不多!下面是apache官方的swapCase这个方法

/** 
 * <p>Swaps the case of a String changing upper and title case to 
 * lower case, and lower case to upper case.</p> 
 * 
 * <ul> 
 *  <li>Upper case character converts to Lower case</li> 
 *  <li>Title case character converts to Lower case</li> 
 *  <li>Lower case character converts to Upper case</li> 
 * </ul> 
 * 
 * <p>For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}. 
 * A {@code null} input String returns {@code null}.</p> 
 * 
 * <pre> 
 * StringUtils.swapCase(null)                 = null 
 * StringUtils.swapCase("")                   = "" 
 * StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone" 
 * </pre> 
 * 
 * <p>NOTE: This method changed in Lang version 2.0. 
 * It no longer performs a word based algorithm. 
 * If you only use ASCII, you will notice no change. 
 * That functionality is available in org.apache.commons.lang3.text.WordUtils.</p> 
 * 
 * @param str  the String to swap case, may be null 
 * @return the changed String, {@code null} if null String input 
 */
public static String swapCase(String str) {
    if (StringUtils.isEmpty(str)) {
        return str;
    }
  
    char[] buffer = str.toCharArray();
  
    for (int i = 0; i < buffer.length; i++) {
        char ch = buffer[i];
        if (Character.isUpperCase(ch)) {
            buffer[i] = Character.toLowerCase(ch);
        } else if (Character.isTitleCase(ch)) {
            buffer[i] = Character.toLowerCase(ch);
        } else if (Character.isLowerCase(ch)) {
            buffer[i] = Character.toUpperCase(ch);
        }
    }
    return new String(buffer);
}


赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏