java之endwith()⽅法以及正则表达式匹配中⽂
正则匹配指定中文汉字
今天写程序的时候遇到判断需要使⽤多个if(){}else{}语句,观察了⼀下需要判断的条件,发现判断的条件可以变为对条件最后⼏个汉字的判断,就想⽤正则表达式来对汉字判断,写完后,想到可以⽤Java中String类的endwith()⽅法来对汉字实现匹配,例如
String str="世界你好我喜欢编程";
dwith("编程")){
  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 = unt;
if ((paramInt < 0) || (paramInt > unt - 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, unt - unt);
}
char类型可以存储⼀个中⽂汉字,因为Java中使⽤的编码是Unicode(不选择任何特定的编码,直接使⽤字符在字符集中的编号,这是统⼀的唯⼀⽅法),⼀个char类型占2个字节byte(16⽐特bit),所以放⼀个中⽂是没问题的。
 1:“字节”是byte,“位”是bit ;
 2: 1 byte = 8 bit ;
char 在中是2个字节。java采⽤unicode,2个字节(16位)来表⽰⼀个字符。
java是⽤unicode来表⽰字符,中⽂字符的unicode就是2个字节。
正则表达式匹配中⽂:
package test1;
import Pattern;
public class patterntest {
public static void main(String[] args)
{
String str = "编程世界你好,我爱编程";
System.out.println(Patternpile("[编][程]").matcher(str).find());
}
}
在对String进⾏匹配时没有使⽤  str.matches("[编][程]"),如果使⽤则返回的式false。
  在Java API中对matches(String regx)的返回说明:当且仅当此字符串匹配给定的正则表达式时,返回true,也就是说,你给定的正则表达式需要与整个字符串匹配才会返回true,⽽现在的情景相当于在字符串中去查有没有某个特定的字符串,所以不能使⽤matches(String regx)⽅法。
注意:在写匹配规则时,需要将匹配的汉字分别⽤[]隔开匹配。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。