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));               //有一次面試問append()是哪個類里面的
  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. //第三種思路:利用Character包裝類的isLowerCase()和isUpperCase()方法: 
    47.  總結:

      1.Java很強大,包裝了一些常用的方法,在了解的基礎上,現成的當然省力。

      2.經常查java的Api文檔很重要,java的巨人

      3.前兩種思路包含了很巧妙地思想,擴展思維有很大幫助。在不了解java的情況下,完全可以靠學過的知識解決。

      經常犯的錯誤

      1.注意:如果將 a[i]<='Z'寫成了a[i]<="Z",就會報錯:運算符<=不能應用於char,java.lang.String

      因為雙引號表示字符串(String類型),單引號表示字符(Char類型)。

      2.length()方法 i<j.length()  寫成i<jlength,就會報錯.

       

       

       

      java中判斷字符串是否為純數字  

       

      方法一:利用正則表達式

      public class Testone {
      public static void main(String[] args){
      String str="123456";
      boolean result=str.matches("[0-9]+");
      if (result == true) { 
      System.out.println("該字符串是純數字");
      }else{
      System.out.println("該字符串不是純數字");
      }
      }
      }

      方法二:利用Pattern.

      import java.util.regex.Matcher;
      import java.util.regex.Pattern;

      public class Testone {
      public static void main(String[] args){
      String str="123456";
      Pattern pattern = Pattern.compile("[0-9]{1,}");
      Matcher matcher = pattern.matcher((CharSequence)str);
      boolean result=matcher.matches();
      if (result == true) {
      System.out.println("該字符串是純數字");
      }else{
      System.out.println("該字符串不是純數字");
      }
      }
      }

       //原來以為正則表達式是js里面的,Java中也有呀!

       
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM