使用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中文汉字"; ...
随机推荐
- HTML页面和JSP页面禁止缓存
一.JSP页面禁止缓存: 防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置,此效果如下的“HTML禁止缓存”: % 将过期日期设置为一个过去时间response.setHeader( ...
- 《Java程序设计》 课程教学
<Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...
- RapidJSON 代码剖析(一):混合任意类型的堆栈
大家好,这个专栏会分析 RapidJSON (中文使用手册)中一些有趣的 C++ 代码,希望对读者有所裨益. C++ 语法解说 我们先来看一行代码(document.h): bool StartArr ...
- Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...
- TAC 坦克队
The Art of Code 团队成员 组长: 031402330吴宇轩 组员: 031402509胡泽善 031402224彭 巍 031402230张建明 031402508 ...
- 【USACO 2.3】Cow Pedigrees(DP)
问n个结点深度为k且只有度为2或0的二叉树有多少种. dp[i][j]=dp[lk][ln]*dp[rk][j-1-ln],max(lk,rk)=i-1. http://train.usaco.org ...
- C#文本写入文件,追加写入文件
写入文件和这个对象 StreamWriter using (StreamWriter fs = new StreamWriter(path, true)) { fs.WriteLine(strLog) ...
- js 中关于this用变量存起来的原因
近来,不忙,总是在网上看大牛的博客,发现关于this指向的情况,有的说是4种,也对,有的就是总结一句话,也对,但是我发现一种特殊情况,例子如下 var show={ btn:$('.div1'), i ...
- Node.js process 模块常用属性和方法
Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...
- SQLPROMPT5.3对各种加密对象的解密测试
SQLPROMPT5.3对各种加密对象的解密测试 测试环境: SQL2005个人开发者版 SP4 SQLPROMPT版本:5.3.8.2 视图 CREATE VIEW aa WITH ENCRYPTI ...