java字符串确定汉字_java中判断字符串中汉字的个数

使用方法3与方法4时需要注意一些问题,代码中会有注释。

代码如下:

package 包名;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class 类名 {

public static void main(String[] args) {

f0();

f1();

f2();

f3();

f4();

}

// 方法0,运用列表的部分知识

private static void f0() {

String regex = "[\u4e00-\u9fa5]";

ArrayListlist = new ArrayList();// 定义一个列表用于存放找到的中文

String ss = "java中求字符串中汉字的个数";

Pattern pattern = Pattern.compile(regex);// 定义模式,(模具)

Matcher matcher = pattern.matcher(ss); // 匹配结果

while (matcher.find()) { // 匹配结果读找到第一个

list.add(matcher.group());

}

System.out.println(list);

System.out.println(list.size());

}

// 方法1:利用String.replaceAll()将所有的汉字替换成空字符,利用其与原字符串的长度差得到汉字的个数。

public static void f1() {

String regex = "[\u4e00-\u9fa5]";

String ss = "java中求字符串中汉字的个数";

System.out.println(ss.length() - ss.replaceAll(regex, "").length());

}

// 方法2:类似于方法1,只不过是把每个汉字替换成两个字符

public static void f2() {

String regex = "[\u4e00-\u9fa5]";

String ss = "java中求字符串中汉字的个数";

System.out.println(ss.replaceAll(regex, "12").length() - ss.length());

}

// 方法3:将字符串转化为字节数组,每个汉字占2个字节(GBK),编码格式不同汉字所占的字节数也不同。(例如:utf-8中汉字占3个字节)

// 并且汉字转换成字节均为负数,可以使用注释掉的代码进行测试

// 使用此种方法需要注意,中文标点所占字节数与汉字相同

public static void f3() {

String ss = "java中求字符串中汉字的个数";

byte[] bytes = ss.getBytes();

int num = 0;

for (int i = 0; i < bytes.length; i++) {

if (bytes[i] < 0) {

num++;

i = i + 1;

}

// System.out.println(bytes[i]);

}

System.out.println(num);

}

// 方法4:将汉字作为分割标志,把字符串分割成字符数组。(字符数组长度-1)即为字符串中汉字个数

// 但此时汉字不能是最后一个字符,可以使用注释掉的代码进行测试

public static void f4() {

String regex = "[\u4e00-\u9fa5]";

String ss = "java中求字符串中汉字的个数。";

// String[]s=ss.split(regex);

// for(int i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值