不用正则表达式判断一个字符串是否只包含汉字,用java写
时间: 2023-05-28 19:06:54 浏览: 212
可以使用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正则表达式匹配开头是中文的字符串
可以使用以下正则表达式来匹配开头是中文的字符串:
```
^[\\u4e00-\\u9fa5]+
```
其中,`^` 表示匹配字符串的开头,`\\u4e00-\\u9fa5` 表示匹配所有的中文字符。使用 `+` 表示匹配一个或多个中文字符。
用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()`函数,将匹配到的中文人名依次输出。
阅读全文