不用正则表达式判断一个字符串是否只包含汉字,用java写
时间: 2023-05-28 20:06:54 浏览: 200
可以使用Java自带的Character类来判断一个字符是否为汉字,从而判断一个字符串是否只包含汉字,示例如下:
```java
public static boolean isChinese(String str) {
if (str == null) {
return false;
}
for (char c : str.toCharArray()) {
if (!Character.isIdeographic(c)) {
return false;
}
}
return true;
}
```
该方法接收一个字符串作为参数,遍历字符串中的每个字符,使用Character.isIdeographic方法判断该字符是否为汉字,如果存在任何一个字符不是汉字,则说明该字符串不只包含汉字,返回false;否则说明该字符串只包含汉字,返回true。如果传入的字符串为null,直接返回false。
相关问题
Java正则表达式判断目标字符串中只包含中文、字母、数字、下划线、横线
可以使用Java正则表达式中的字符集来匹配只包含中文、字母、数字、下划线、横线的字符串。可以使用以下正则表达式:
```
^[a-zA-Z0-9_\u4e00-\u9fa5-]+$
```
其中:
- `^` 表示匹配字符串的开头
- `[a-zA-Z0-9_\u4e00-\u9fa5-]` 表示匹配中文、字母、数字、下划线、横线
- `+` 表示匹配前面的字符集一次或多次
- `$` 表示匹配字符串的结尾
使用Java代码可以这样实现:
```java
String regex = "^[a-zA-Z0-9_\\u4e00-\\u9fa5-]+$";
String target = "这是一个包含中文、字母、数字、下划线、横线的字符串_123-abc";
boolean isMatch = target.matches(regex);
System.out.println(isMatch); // 输出 true
```
注意,中括号 `[]` 中的 `-` 表示匹配一个范围内的字符,所以要放在最后。同时,Java中的Unicode编码需要写成 `\uXXXX` 的形式。
用Java分析以下需求并完成代码 现有字符串"古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs425425卡尔扎巴" 1、使用正则表达式,将字符串中的,非中文字符替换为"-" 2、使用正则表达式,将字符串中的,中文人名获取出来
下面是实现上述需求的代码(Java语言):
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringRegexDemo {
public static void main(String[] args) {
// 原始字符串
String s = "古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs425425卡尔扎巴";
// 1. 使用正则表达式,将字符串中的非中文字符替换为"-"
String patternStr = "[^\\u4e00-\\u9fa5]";
String replaceStr = "-";
String result = s.replaceAll(patternStr, replaceStr);
System.out.println(result);
// 2. 使用正则表达式,将字符串中的中文人名获取出来
patternStr = "[\\u4e00-\\u9fa5]{2,4}";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
```
输出结果如下:
```
古力娜扎-------迪丽热巴--------马尔扎哈----------卡尔扎巴
古力娜扎
迪丽热巴
马尔扎哈
卡尔扎巴
```
解释一下代码:
1. 使用`String.replaceAll()`函数,将非中文字符替换为"-", `[^\\u4e00-\\u9fa5]`表示除了中文字符以外的任意字符,`-`表示替换为"-"。
2. 使用正则表达式`[\\u4e00-\\u9fa5]{2,4}`匹配中文人名,其中`[\\u4e00-\\u9fa5]`表示匹配任意一个中文字符,`{2,4}`表示这个中文字符重复2到4次,也就是匹配2到4个中文字符组成的字符串。然后使用`Pattern.matcher()`函数,将匹配到的中文人名依次输出。
阅读全文