按字节截图字符串,防止出现半个中文

package Test;


import java.io.UnsupportedEncodingException;


public class test1 {
public static String getString(String s, int n)
throws UnsupportedEncodingException {
int index = 0; // 定义游标位置
StringBuffer ss = new StringBuffer();
for (int i = 0; i < n; i++) {
if (s.charAt(index) < 255 && s.charAt(index) > 0 // s.charAt(index)
// < 255
// asicc码大于255的是汉字
|| Character.isDigit(s.charAt(index))) {
// Character.isDigit(s.charAt(index)) 确定指定字符(Unicode 代码点)是否为数字。
ss.append(s.charAt(index)); // 如果当前字符不输于字母或者是数字,则添加到结果。
index++;
} else {
ss.append(s.charAt(index)); // 如果当前字符是汉字,则添加到结果中,游标向前移动一位。
index++;
i++;
}
}
return ss.toString();
}


public static void main(String[] ard) throws UnsupportedEncodingException {
    System.out.println(getString("中国123", 2));
System.out.println(getSting2("中国123", 5));
}


private static StringBuilder getSting2(String obj, int length) {
StringBuilder sBuilder = new StringBuilder();
int objLength = obj.getBytes().length;
int j = 0;// 循环截取字符串变量
if (length > objLength) {//防止截图长度大于本身长度
length = objLength;
}
for (int i = 0; i < length; i++) {
String temp = obj.substring(j, j + 1);// 循环截取字符
if (temp.getBytes().length == 2) {// 字符为汉字
sBuilder.append(temp);
i++;
} else {
sBuilder.append(temp);
}
j++;
}
return sBuilder;
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值