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

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

观看提示:

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

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

 

 
 
  1. //把一个字符串中的大写转为小写,小写转换为大写:思路1

  2. public static String exChange(String str){

  3. StringBuffer sb = new StringBuffer();

  4. if(str!=null){

  5. for(int i=0;i<str.length();i++){

  6. char c = str.charAt(i);

  7. if(Character.isUpperCase(c)){

  8. sb.append(Character.toLowerCase(c));

  9. }else if(Character.isLowerCase(c)){

  10. sb.append(Character.toUpperCase(c));

  11. }

  12. }

  13. }

  14.  
  15. return sb.toString();

  16. }

  17.  
  18. //把一个字符串中的大写转为小写,小写转换为大写:思路2

  19. public static String exChange2(String str){

  20. for(int i=0;i<str.length();i++){

  21. //如果是小写

  22. if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){

  23. str.substring(i, i+1).toUpperCase();

  24. }else{

  25. str.substring(i, i+1).toLowerCase();

  26. }

  27. }

  28. return str;

  29. }

 

 

【温馨提示】.

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这个方法

 

 
  1. /**

  2. * <p>Swaps the case of a String changing upper and title case to

  3. * lower case, and lower case to upper case.</p>

  4. *

  5. * <ul>

  6. * <li>Upper case character converts to Lower case</li>

  7. * <li>Title case character converts to Lower case</li>

  8. * <li>Lower case character converts to Upper case</li>

  9. * </ul>

  10. *

  11. * <p>For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}.

  12. * A {@code null} input String returns {@code null}.</p>

  13. *

  14. * <pre>

  15. * StringUtils.swapCase(null) = null

  16. * StringUtils.swapCase("") = ""

  17. * StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"

  18. * </pre>

  19. *

  20. * <p>NOTE: This method changed in Lang version 2.0.

  21. * It no longer performs a word based algorithm.

  22. * If you only use ASCII, you will notice no change.

  23. * That functionality is available in org.apache.commons.lang3.text.WordUtils.</p>

  24. *

  25. * @param str the String to swap case, may be null

  26. * @return the changed String, {@code null} if null String input

  27. */

  28. public static String swapCase(String str) {

  29. if (StringUtils.isEmpty(str)) {

  30. return str;

  31. }

  32.  
  33. char[] buffer = str.toCharArray();

  34.  
  35. for (int i = 0; i < buffer.length; i++) {

  36. char ch = buffer[i];

  37. if (Character.isUpperCase(ch)) {

  38. buffer[i] = Character.toLowerCase(ch);

  39. } else if (Character.isTitleCase(ch)) {

  40. buffer[i] = Character.toLowerCase(ch);

  41. } else if (Character.isLowerCase(ch)) {

  42. buffer[i] = Character.toUpperCase(ch);

  43. }

  44. }

  45. return new String(buffer);

  46. }

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾利克斯冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值