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

摘要:
您可以使用Java中String类的endwith()方法来匹配中文字符,inti=this。偏移量+paramInt;char[]arrayOfChar2=paramString.value;this.count-k))returnfalse;=arrayOfChar2[(j++)])返回false;Java使用unicode表示字符。

今天写程序的时候遇到判断需要使用多个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)方法。

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

免责声明:文章转载自《java之endwith()方法以及正则表达式匹配中文》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Eclipse安装颜色主题,个性化你的IDE,让你的IDE焕然一新标准Socket与Delphi中的Socket下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Security踩坑记录(静态资源放行异常)

转自:https://blog.csdn.net/qq_34204490/article/details/110005404 Springboot + Spring-Security的踩坑记录 问题描述:今天使用springboot整合springsecurity,出现静态资源404的状态 解决: 1.首先尝试使用网上的方法继承 WebSecurityCo...

十、oracle 常用函数

一、字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式。upper(char):将字符串转化为大写的格式。length(char):返回字符串的长度。substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个replace(char1, sear...

根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax

基本介绍 XmlHttpRequest XmlHttpRequest是JavaScript中原生的,历史悠久的一种发送网络请求的方案。 基本上所有前端框架对于网络请求的部分都是基于它来完成的。 在本章节中我们将了解它的基本用法,并且会实现一个与jQuery.ajax功能百分之九十相似的网络请求组件。 我是没有读过jQuery.ajax源码的,并且我也不是一...

25.Android之图像的平移、旋转及缩放学习

在Android中,项目目录下的resdrawable用来放置该项目的图片资源。   Android中提供了Bitmap类来获取图像文件信息,进行图像的平移、旋转及缩放等操作,并可以指定格式保存图像文件。 1.图像绘制   在绘制图像之前,需要从项目目录下的resdrawable中获取所需的图片资源。我们可以通过资源索引来获得该图像对象Bitmap。具体...

NSURLSession的基本使用

一、简单说明   在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。   NSURLSession的使用非常简单,先根据会话对象创建一个请求Task,然后执行该Task即可。   NSURLSessionTask本身是一个抽象类,在使用的时候,通常...

【CUDA并行编程之八】Cuda实现Kmeans算法

本文主要介绍如何使用CUDA并行计算框架编程实现机器学习中的Kmeans算法,Kmeans算法的详细介绍在这里,本文重点在并行实现的过程。 当然还是简单的回顾一下kmeans算法的串行过程: 伪代码: [cpp]view plaincopy 创建k个点作为起始质心(经常是随机选择) 当任意一个点的簇分配结果发生改变时 对数据集中的每个数据点 对每...