以下是改进后的 Java 函数,它会在检测到字符串中第一个汉字时立即返回 true
,否则返回 false
。这样可以提高效率,避免不必要的遍历。
java
复制
public class ChineseCharacterChecker {
/**
* 检查字符串中是否包含汉字,检测到第一个汉字后立即返回 true。
*
* @param str 需要检查的字符串
* @return 如果包含汉字返回 true,否则返回 false
*/
public static boolean containsChinese(String str) {
if (str == null || str.isEmpty()) {
return false;
}
for (char c : str.toCharArray()) {
if (isChinese(c)) {
return true; // 检测到汉字,立即返回 true
}
}
return false; // 没有检测到汉字
}
/**
* 判断一个字符是否是汉字。
*
* @param c 需要判断的字符
* @return 如果是汉字返回 true,否则返回 false
*/
private static boolean isChinese(char c) {
// 汉字的 Unicode 范围是 \u4e00 到 \u9fa5
return c >= '\u4e00' && c <= '\u9fa5';
}
public static void main(String[] args) {
String testStr1 = "Hello, 世界!";
String testStr2 = "Hello, World!";
String testStr3 = "12345";
String testStr4 = ""; // 空字符串
String testStr5 = null; // null 字符串
System.out.println(containsChinese(testStr1)); // 输出: true
System.out.println(containsChinese(testStr2)); // 输出: false
System.out.println(containsChinese(testStr3)); // 输出: false
System.out.println(containsChinese(testStr4)); // 输出: false
System.out.println(containsChinese(testStr5)); // 输出: false
}
}
代码说明:
containsChinese(String str)
:- 检查字符串是否为
null
或空字符串,如果是则直接返回false
。 - 遍历字符串中的每个字符,调用
isChinese
方法检查是否为汉字。 - 如果检测到汉字,立即返回
true
,结束函数。 - 如果遍历结束后没有检测到汉字,返回
false
。
- 检查字符串是否为
isChinese(char c)
:- 判断字符是否在汉字的 Unicode 范围内(
\u4e00
到\u9fa5
)。 - 如果是汉字,返回
true
,否则返回false
。
- 判断字符是否在汉字的 Unicode 范围内(
main
方法:- 测试了包含汉字、不包含汉字、空字符串和
null
的情况。
- 测试了包含汉字、不包含汉字、空字符串和
运行结果:
"Hello, 世界!"
包含汉字,返回true
。"Hello, World!"
不包含汉字,返回false
。"12345"
不包含汉字,返回false
。- 空字符串和
null
字符串返回false
。
优化点:
- 通过立即返回的方式,避免了不必要的遍历,提高了效率。
- 对
null
和空字符串进行了处理,增强了代码的健壮性。