第一种方法:
public boolean gbk(String str)
{
char[] chars=str.toCharArray();
boolean isGB2312=false;
for(int i=0;i<chars.length;i++){
byte[] bytes=(""+chars[i]).getBytes();
if(bytes.length==2){
int[] ints=new int[2];
ints[0]=bytes[0]& 0xff;
ints[1]=bytes[1]& 0xff;
if(ints[0]>=0x81 && ints[0]<=0xFE && ints[1]>=0x40 && ints[1]<=0xFE){
isGB2312=true;
break;
}
}
}
return isGB2312;
}
第二种方法:
java用的是Unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了,实际中,我们希望判断一个字符是不是汉字,或者一个字符串里的字符是否有汉字来满足业务上的需求,String类中有个这样的方法可得到其字符长度length() ,看下面例子,
String s1 = "我是中国人";
String s2 = "imchinese";
String s3 = "im中国人";
System.out.println(s1+":"+new String(s1).length());
System.out.println(s2+":"+new String(s2).length());
System.out.println(s3+":"+new String(s3).length());
OUTPUT:
我是中国人:5
imchinese:9
im中国人:5
看到了吧,字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码
于是按照以上的规律,结合一位QQ昵称 ?G茶?I珠海 兄的提示由以下解决方法,就是判断字符串的长度和字符字节的长度是否相同来判断是否有双字节的字符
System.out.println((s1.getBytes().length == s1.length())?"s1无汉字":"s1有汉字");
System.out.println((s2.getBytes().length == s2.length())?"s2无汉字":"s2有汉字");
System.out.println((s3.getBytes().length == s3.length())?"s3无汉字":"s3有汉字");
OUTPUT:
s1有汉字
s2无汉字
s3有汉字
且慢,这样诚然可以判断出来一个串中是否有双字节编码的字符,但是要精确判断是否有汉字就有些麻烦了,我们知道还有许多其他国家的字符在Unicode中是双字节的.
于是,需要进一步确定汉字的编码范围怎么确定呢,我用了一个本办法那就是现在记事本输出0-65535之间的字符,通过观察发现第一个汉字是'一'最后一个是'??'(现在我也不认识);这下好了判断汉字就容易多了比如我们可以通过比较字符的编码范围,最后给大家一些我试验的结果汉字基本集中在[19968,40869]之间,共有20901个汉字(是不是少了点,算算你能认识多少)
分享到:
相关推荐
通过本文的学习,我们不仅了解了如何使用 Java 的正则表达式来判断一个字符串中是否包含中文字符,还深入了解了 Java 中正则表达式的相关 API 和基本原理。这对于从事 Java 开发的技术人员来说是非常实用且必要的...
至于判断字符串中是否有连续的中文字符,我们可以稍微修改上述代码,添加一个额外的条件来检查当前字符和下一个字符是否都是中文。这里是一个可能的实现: ```java public static boolean hasConsecutiveChinese...
特别是在多语言环境中,我们需要能够判断字符串中是否包含特定的字符集,比如中文字符。由于中文字符在Unicode编码中具有特定的编码范围,我们可以利用这一点来判断字符串中是否包含中文。 首先,了解Unicode编码...
以上介绍了两种在Java中判断字符串是否包含汉字的方法。第一种方法较为简单,适用于初步筛选。第二种方法更为精确,可以准确地判断字符串是否包含汉字。实际开发中应根据具体需求选择合适的方法。此外,对于复杂的多...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...
总结起来,Java中判断字符串是否全为中文字符可以通过遍历字符并检查Unicode值、使用`Character.isIdeographic`或正则表达式等方法实现。不同的方法适用于不同的情形,开发人员应根据项目需求选择最恰当的实现方式。
总的来说,Java中判断字符串中是否包含中英文字符可以通过多种方式实现,关键在于理解字符编码和字符串处理的基本原理。根据实际场景选择合适的方法,既可以满足功能需求,又能兼顾效率和可读性。在进行这类操作时,...
在Java中判断字符串是否含有乱码是一个常见的问题,特别是在处理网络传输数据或文本文件导入导出时。本文将介绍通过实例代码如何判断一个字符串是否含有乱码,并通过编写的Java方法来实现此功能。 首先,我们需要...
针对Oracle数据库中汉字在不通的字符集下所占字符长度不通,在保存时可能需要对源字符串的长度进行判断。 实现过程如下 /** * 针对汉字 进行计算长度 * @param string 计算的字符串 * @param ...
总的来说,"java朗读中文字符串.zip"中的示例可能涵盖了以上这些知识点,通过阅读和学习这些代码,你可以了解如何在Java环境中实现中文文本的语音合成。对于学习和开发涉及语音交互的Java应用,这是一个非常实用的...
标题提到的"统计字符串中汉字、字母、数字、英文标点、中文标点个数"是一个典型的字符串分析问题,它涉及到对输入字符串进行逐个字符检查,识别并计数不同类型的字符。这个问题可以通过多种编程语言来解决,例如...
通过遍历字符串中的每一个字符,并判断是否匹配正则表达式`[\u0391-\uFFE5]`(此正则表达式覆盖了常用的汉字编码范围),来决定该字符是中文还是其他字符。如果匹配,则长度加2;如果不匹配,则长度加1。 2. 第二个...
#### 四、判断字符串中有多少个汉字和标点符号 根据题目描述,我们需要实现一个方法来统计字符串中汉字和标点符号的数量。具体步骤如下: 1. **定义方法 `isChinese(char c)`**:此方法用于判断单个字符是否为汉字...
【Java 判断字符串中文英文工具类】 在Java编程中,有时我们需要判断一个字符串中的字符是否为中文或英文。为了实现这个功能,我们可以创建一个工具类,利用Java的`Character`类和正则表达式进行判断。以下是一个...
因此,在实际应用中,我们需要先判断输入的字符串是否可以转换为数字。这可以通过`NumberFormatException`捕获或者使用`Double.parseDouble()`或`Integer.parseInt()`尝试转换并捕获异常来实现。 ```java public ...
这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
为了方便你直接使用这些功能,你可以将以上代码保存到名为`Java取得字符串中汉字字符串.java`和`判断是否为空白字符串.java`的两个Java文件中。在你的项目中导入并使用这些类,它们将帮助你有效地处理字符串中的汉字...
Java 中判断字符串中是否包含中文是非常重要的功能,在实际开发中经常会遇到这种需求。下面我们来详细介绍如何使用 Java 实现字符串中是否包含中文的判断。 首先,我们可以使用 Unicode 编码来判断,因为中文的编码...
在这个Java示例中,我们通过迭代器遍历字符串中的每个字符,然后使用`UCharacter.isSimpleCompatibilityIdeographic`方法来判断字符是否为简体字。 总的来说,检验字符串是否包含简体字涉及到对中文字符集的理解和...