Java判断一个字符串是否有中文是利用Unicode编码来判断,因为中文的编码区间为:
0x4e00--0x9fbb,不过通用区间来判断中文也不非常精确,因为有些中文的标点符号利用区间判断会得到错误的结果。而且利用区间判断中文效率也并不高,例如;str.substring(i, i + 1).matches("[\\u4e00-\\u9fbb]+"),就需要遍历整个字符串,如果字符串太长效率非常低,而且判断标点还会错误。这里提高一个高效准确的判断方法,方法在下面的代码里:private static final boolean isChinese(char c) 。类已经编译通过,运行可以查看结果。
package com.zakisoft.ch;
public class IsChineseOrNot {
// GENERAL_PUNCTUATION 判断中文的“号
// CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
// HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
private static final boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
public static final boolean isChinese(String strName) {
char[] ch = strName.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
return true;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(isChinese("き"));
System.out.println(isChinese("test,.?!%^&*(){}[]"));
System.out.println(isChinese("测试"));
System.out.println(isChinese("“测试”,。?!%……&*()——{}【】”"));
}
public static final boolean isChineseCharacter(String chineseStr) {
char[] charArray = chineseStr.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if ((charArray[i] >= 0x4e00) && (charArray[i] <= 0x9fbb)) {
return true;
}
}
return false;
}
/**
* @deprecated; 弃用。和方法isChineseCharacter比效率太低。
* */
public static final boolean isChineseCharacter_f2() {
String str = "!?";
for (int i = 0; i < str.length(); i++) {
if (str.substring(i, i + 1).matches("[\\u4e00-\\u9fbb]+")) {
return true;
}
}
return false;
}
}
System.out.println(isChinese("き"));
System.out.println(isChinese("test,.?!%^&*(){}[]"));
System.out.println(isChinese("测试"));
System.out.println(isChinese("“测试”,。?!%……&*()——{}【】”"));
运行结果为:
false
false
true
true
分享到:
相关推荐
### Java判断字符串是否包含汉字的方法 在开发过程中,有时我们需要判断一个字符串是否包含汉字,并根据判断的结果执行不同的逻辑。这通常出现在需要处理多语言输入的情况下,例如用户输入验证、文本分析等场景。...
以下是一种常见的解决方法,通过判断字符串中的每个字节来确定是否为中文字符,并据此进行截取: ```java public class StringTrimmer { private String str; private int counterOfDoubleByte; private byte b...
然而,当处理包含中文字符的字符串时,简单的按字符截取可能会出现问题,因为中文字符通常占用两个字节,而英文字符只占用一个字节。为了实现更精确的截取,可以采用如下的方法: ```java private String str; ...
- 通过`charAt`方法获取每一个字符,并判断是否为中文字符(ASCII值大于255)。 - 对于中文字符,长度计数增加2;对于英文字符,长度计数增加1。 - 如果达到指定的起始位置或起始位置加1,则记录当前`...
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
]+") 来判断字符串是否包含中文,需要遍历整个字符串,如果字符串太长效率非常低,而且判断标点还会错误。 为了提高判断的效率和准确性,我们可以使用 Java 中的 Character 类。Character 类提供了 UnicodeBlock ...
Java提供了多种方式来比较字符串,确保我们能精确地判断两个字符串是否相等或按某种顺序排列。下面将详细介绍Java中字符串的比较方法。 1. **`==` 操作符** 在Java中,基础数据类型如int、char可以直接使用`==`来...
以下是一个名为`Test`的类,其中包含一个静态方法`getLastDayInfo`,该方法接收一个表示当前日期的字符串参数,并返回昨天的日期字符串: ```java public class Test { /** * 获取昨天的日期字符串 * * @param...
- 判断字符串长度是否超过目标长度。如果未超过,则直接返回原字符串。 - 如果超过了目标长度,则进一步计算实际字符宽度,并据此确定截取的位置。 - 在循环中,逐个字符判断其是全角还是半角字符,并相应累加宽度值...
本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...
下面是一个使用 Java 统计字符串中中文、英文、数字、空格、特殊字符的个数的示例代码: ```java package cn.csrc.base.count; public class CountCharacter { public static void main(String[] args) { String...
在编程中,我们可以直接使用`==`运算符(或在某些语言中,如Python,使用`==`或`is`)来判断两个字符串是否相等。 2. **忽略大小写比较**:在某些情况下,我们可能不在乎字符串中的字符是否大写或小写。可以使用...
此外,还展示了一个使用Visual Basic的示例,使用`Strings.StrConv`函数来转换字符串的编码格式,如宽字符转换、传统中文转换、简化中文转换等,这在处理多语言环境下的文本时非常有用。 ### 总结 全角与半角字符...
在Java编程语言中,判断一个字符串是否包含中文字符通常涉及到对Unicode编码的理解。中文字符主要集中在Unicode的CJK统一汉字区,但简单的Unicode编码区间判断可能会出现不准确的情况,特别是对于中文标点符号等特殊...
关于闰年的判断,Java提供了`Calendar`类,它是一个抽象基类,可以用来操作日期和时间。以下是如何使用`Calendar`来检查一个年份是否为闰年: ```java int year = 2024; Calendar calendar = Calendar.getInstance...
根据给定文件的信息,本文将围绕“JS与Java中判断字符串中文、英文混合长度的方法”这一主题进行深入探讨。文章将分别介绍JavaScript和Java中如何处理包含中文字符和英文字符的混合字符串,并计算其等效长度。 ### ...
这个函数可以帮助程序员在处理字符串时判断它们是否相等,或者确定一个字符串是否是另一个字符串的子串。下面将详细阐述`strcmp`函数的用法、返回值以及在实际编程中的应用。 ### `strcmp`函数的定义和用法 `...
**功能:** 判断传入的字符串是否为空或长度为零。 **参数:** - `str` - 需要判断的字符串。 **返回值:** - 如果字符串为`null`或其长度小于等于0,则返回`true`;否则返回`false`。 **应用场景:** - 在处理用户...
在Java编程语言中,判断一个...通过这些步骤,你可以理解并执行这个关于判断字符串是否在另一个字符串中的Java程序。了解并熟练掌握这些基础知识对于Java编程至关重要,因为它们构成了许多复杂算法和实用工具的基础。