不用正则表达式判断一个字符串是否只包含汉字,用java写
时间: 2023-05-28 13:06:54 浏览: 57
可以使用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自带的Character类来判断一个字符是否为中文,进而判断一个字符串是否全部为中文。
示例代码:
```java
public static boolean isChinese(String str) {
for (char c : str.toCharArray()) {
if (!Character.UnicodeBlock.of(c).equals(Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS)) {
return false;
}
}
return true;
}
```
该方法会遍历字符串中的每个字符,判断其是否属于Unicode中的中文字符集(CJK_UNIFIED_IDEOGRAPHS),如果有一个字符不属于中文字符集,则返回false,如果所有字符都属于中文字符集,则返回true。
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` 的形式。