• 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)方法。

    注意:在写匹配规则时,需要将匹配的汉字分别用[]隔开匹配。

  • 相关阅读:
    图片上下左右居中
    点击滚动指定高度 屏幕滚动事件
    实例16 验证登录信息的合法性
    实例15 判断某一年是否为闰年
    实例14 实现两个变量的互换(不借助第3个变量)
    实例13 不用乘法运算符实现2*16
    实例12 用三元运算符判断奇数和偶数
    实例11 加密可以这样简单(位运算)
    实例10 自动类型转换与强制类型转换
    实例9 重定向输入流实现程序日志
  • 原文地址:https://www.cnblogs.com/qinshou/p/8367052.html
Copyright © 2020-2023  润新知