使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法:
1、
char[] c = str.toCharArray();
for(int i = 0; i < c.length; i ++)
{
String len = Integer.toBinaryString(c[i]);
if(len.length() > 8)
count ++;
}
根据一个中文占两个字节,假如一个字符的字节数大于8,则判断为中文。
2 、
String regEx = "[\\u4e00-\\u9fa5]";
String term = str.replaceAll(regEx, "aa");
count = term.length()-str.length();
[\u4e00-\u9fa5]是中文的Unicode编码范围,用正则表达式的方法,若字符串中有字符满足中文的正则表达式,则判定为中文,将其替换为两个字符,故长度差就为中文的个数。
3、
String regEx = "[\u4e00-\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
while(m.find())
{
count ++; }
与第二种方法原理一样,只是用了Pattern类,若Matcher可以匹配,则说明找到了一个中文字符。
4、
byte[] bytStr = str.getBytes();
System.out.println(bytStr); for(int i = 0; i < bytStr.length; i ++)
{
if(bytStr[i] < 0 )//java中文字符是负的BYTE值
{
count ++;
i++;//中文字符是双字节
}
}
如上的注释所说,中文字符是双字节,且中文字符的byte值是负的,用这个方法来判断。
5、
String regEx = "[^\u4e00-\u9fa5]+";
String[] term = str.split(regEx);
for(int i =0; i < term.length; i ++)
count = count + term[i].length();
仍然是正则表达式的判断方法。该正则表达式的含义是出去中文以外的所有字符的Unicode编码,将这些除去中文字符之外的其他字符去除,剩下的就都是中文字符,得到的就是中文字符串的数据。
使用Java判断字符串中的中文字符数量的更多相关文章
- java 判断字符串中是否包含中文并过滤掉中文
java判断字符串中是否包含中文并过滤掉中文 CreateTime--2017年9月6日08:48:59 Author:Marydon 1.判断字符串中是否包含中文方法封装 /** * 判断字符串 ...
- Java:判断字符串中包含某字符的个数
Java:判断字符串中包含某字符的个数 JAVA中查询一个词在内容中出现的次数: public int getCount(String str,String key){ if(str == null ...
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
- java判断字符串中是否包含中文 过滤中文
package com.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test ...
- java判断字符串中是否含有中文
/** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...
- JAVA判断字符串中某个字符存在的个数
/** * 判断字符串中某个字符存在的个数 * @param str1 完整字符串 * @param str2 要统计匹配个数的字符 * @return */ public static int co ...
- Java检查字符串是否包含中文字符
转自:https://blog.csdn.net/zhanghan18333611647/article/details/80038629 强烈推荐一个大神的人工智能的教程:http://www.ca ...
- C#中判断字符串中包含某个字符
C#判断字符串是否存在某个字符,如果存在进行替换. //定义一个字符串 string str=".net/Java/asp.net"; //检验“/” if(str.Cont ...
- java判断字符串中是否含有汉字
原文:http://www.open-open.com/code/view/1426332240717 判断字符串中是否含有汉字: String str = "test中文汉字"; ...
随机推荐
- 如何动态在文档中加入<script></script>写入大段js
<script language="javascript"> var script = document.createElement("script" ...
- Clone Graph leetcode java(DFS and BFS 基础)
题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...
- javascript数据类型判断
javascript基本数据类型:原始类型 和 引用类型 原始类型(简单数据类型):String,Number,Boolean,Undefined,Null,Symbol(ES6新增) 引用类型( ...
- HTTP Status
Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答 头,一个空行,内容文档.下面是一个最简单的应答 : 状态行包含HTTP版本.状态代码.与状态代码对应的 ...
- javaScript获取url中的参数
var urlTools = { //获取RUL参数值 getUrlParam: function(name) { /*?videoId=identification */ var params = ...
- windows 下 新建 点开头的文件和文件夹
新建 .aaa文件夹 cmd:$ mkdir .aaa 新建 .aaa文件夹 echo " >> .aaa
- hdu2929 Bigger Is Better
题意 给出n根木棍,要你拼一个最大的数,并且这个数是m的倍数. 题解 显然越长的数越大.设\(dp[i][j]\)表示用i根木棍并且\(mod m = j\)的最大长度. 我们很容易想出dp方程,再用 ...
- 创建NetWorkDataset---FileGDB篇
/// <summary> /// 创建NetWorkDataset /// </summary> /// <returns>INetworkDataset.< ...
- Unity unsafe
http://answers.unity3d.com/questions/23307/is-it-impossible-to-use-the-code-with-keyword-unsa.html 可 ...
- ecshop后台 计划任务
计划任务定时清理掉设置后的内容 主要针对单表删除(日志,):对于多表删除,不太好用(订单+订单商品+订单日志) 结构: 1.计划任务语言包:languages\zh_cn\cron\ 2.php文件: ...