判断两个串长串是否包含短串的每一个字符

 <script type="text/ecmascript">
var comp = function () {
    var a = Array.prototype.slice.call(arguments).sort(function (a, b) {
        return a.length - b.length;
    });
   
    return new RegExp("^(?=.*" + a[0].split("").join(")(?=.*") + ").+$").test(a[1]);
};
</script>
<think> 我们需要根据用户需求,从提供的引用中整理出判断字符串是否包含中文的方法。根据引用内容,常见方法有两种: 1. 使用正则表达式匹配(引用[1][2][3]) 2. 遍历字符串的每个字符,检查字符的Unicode编码是否在汉字范围内(引用[1][4][5]) 注意:汉字的Unicode范围通常是`[\u4e00-\u9fa5]`(十六进制),对应十进制为`[19968, 40869]`。 用户需求是“判断一个字符串是否包含中文”,即只要字符串中有一个中文字符就返回true。 我们将提供两种方法,并给出示例代码。 方法一:使用正则表达式 方法二:遍历字符检查编码范围 同时注意,引用[1]中提到了两种:一种是判断是否存在汉字(使用正则),另一种是判断整个字符串都由汉字组成(遍历)。我们这里只需要判断包含即可。 另外,引用[4]和[5]提供了遍历字符的方法。 下面我们将分别用两种方法实现,并给出完整示例。 </think> ### Java判断字符串是否包含中文的方法 在Java中判断字符串是否包含中文字符,主要有两种常用方法,基于Unicode编码范围实现: #### 方法一:正则表达式匹配(推荐) ```java public static boolean containsChinese(String str) { if (str == null) return false; return Pattern.compile("[\u4e00-\u9fa5]").matcher(str).find(); } ``` **原理**: 使用正则表达式`[\u4e00-\u9fa5]`匹配中文字符的Unicode范围(0x4E00-0x9FA5),`find()`方法发现任意中文字符即返回true[^1][^3]。 #### 方法二:字符编码范围检查 ```java public static boolean containsChinese(String str) { if (str == null) return false; for (char c : str.toCharArray()) { if (c >= 0x4E00 && c <= 0x9FA5) { return true; } } return false; } ``` **原理**: 遍历字符串每个字符,检查Unicode值是否在汉字编码区间内(十进制19968-40869)[^4][^5]。 --- ### 使用示例 ```java public static void main(String[] args) { String testStr = "Hello 你好!"; System.out.println(containsChinese(testStr)); // 输出 true } ``` ### 关键说明 1. **编码范围**:中文汉字统一位于Unicode的 **\u4E00-\u9FA5** 区间(共20901个汉字)[^1] 2. **性能建议**: - 字符串:两种方法性能相近 - 字符串:正则表达式效率更高(预编译模式更佳) 3. **扩展判断**:若需验证纯中文,可修改正则表达式为`^[\u4e00-\u9fa5]+$`[^1] > 两种方法均通过检测汉字在Unicode中的连续分布特性实现,实际开发推荐正则表达式法,代码更简洁[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值