java之endwith()方法以及正則表達式匹配中文


今天寫程序的時候遇到判斷需要使用多個if(){}else{}語句,觀察了一下需要判斷的條件,發現判斷的條件可以變為對條件最后幾個漢字的判斷,就想用正則表達式來對漢字判斷,寫完后,想到可以用Java中String類的endwith()方法來對漢字實現匹配,例如

String str="世界你好我喜歡編程";

if(str.endwith("編程")){

  dosomething();

}else{

  dosomething();

}

 

以下是endwith()方法的源碼:

 public boolean startsWith(String paramString, int paramInt)
  {
    char[] arrayOfChar1 = this.value;
    int i = this.offset + paramInt;
    char[] arrayOfChar2 = paramString.value;
    int j = paramString.offset;
    int k = paramString.count;
    if ((paramInt < 0) || (paramInt > this.count - k))
      return false;
    while (true)
    {
      k--;
      if (k < 0)
        break;
      if (arrayOfChar1[(i++)] != arrayOfChar2[(j++)])
        return false;
    }
    return true;
  }

  public boolean startsWith(String paramString)
  {
    return startsWith(paramString, 0);
  }

  public boolean endsWith(String paramString)
  {
    return startsWith(paramString, this.count - paramString.count);
  }

char類型可以存儲一個中文漢字,因為Java中使用的編碼是Unicode(不選擇任何特定的編碼,直接使用字符在字符集中的編號,這是統一的唯一方法),

一個char類型占2個字節byte(16比特bit),所以放一個中文是沒問題的。

 1:“字節”是byte,“位”是bit ;

 2: 1 byte = 8 bit ;

char 在Java中是2個字節。java采用unicode,2個字節(16位)來表示一個字符。

java是用unicode來表示字符,中文字符的unicode就是2個字節。

 

 

 


正則表達式匹配中文:

  

package test1;

import java.util.regex.Pattern;

public class patterntest {
    public static void main(String[] args)
    {
        String str = "編程世界你好,我愛編程";
        System.out.println(Pattern.compile("[編][程]").matcher(str).find());
    }

}


在對String進行匹配時沒有使用   str.matches("[編][程]"),如果使用則返回的式false。

  在Java API中對matches(String regx) 的返回說明:當且僅當此字符串匹配給定的正則表達式時,返回 true,也就是說,你給定的正則表達式需要與整個字符串匹配才會返回true,而現在的情景相當於在字符串中去查找有沒有某個特定的字符串,所以不能使用matches(String regx)方法。

注意:在寫匹配規則時,需要將匹配的漢字分別用[]隔開匹配。

 


免責聲明!

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



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