转自:http://blog.csdn.net/zhengqiqiqinqin/article/details/9097309
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这个方法