java string 中文截取
时间: 2023-11-17 22:08:33 浏览: 152
在Java中,可以使用substring方法对字符串进行截取。但是,由于中文字符在UTF-8编码下占用3个字节,而在GBK编码下占用2个字节,因此在对中文字符串进行截取时,需要注意以下几点:
1. 使用substring方法时,截取的起始和结束位置应该是字符的下标,而不是字节的下标。
2. 如果使用UTF-8编码,则需要将字节数转换为字符数,即将下标除以3。
3. 如果使用GBK编码,则需要将字节数转换为字符数,即将下标除以2。
下面是一个使用UTF-8编码对中文字符串进行截取的示例代码:
```java
public static String subString(String str, int length) {
if (str == null || str.length() == 0) {
return "";
}
int len = str.length();
int count = 0;
int end = 0;
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
if (c < 128) { // ASCII字符
count++;
} else { // 中文字符
count += 3;
}
if (count <= length * 3) { // 字符数小于等于指定长度
end = i + 1;
} else { // 字符数大于指定长度
break;
}
}
return str.substring(0, end);
}
```
使用示例:
```java
String str = "我是一名程序员,我喜欢编程。";
String subStr = subString(str, 10);
System.out.println(subStr); // 输出:我是一名程
```
此外,还可以使用StringUtils工具类中的substring方法对中文字符串进行截取,该方法会自动判断字符串的编码,并进行相应的转换。使用方法如下:
```java
import org.apache.commons.lang3.StringUtils;
String str = "我是一名程序员,我喜欢编程。";
String subStr = StringUtils.substring(str, 0, 10);
System.out.println(subStr); // 输出:我是一名程
```
阅读全文