查找得知汉字占的2个byte都是小于0的,所以这样写了,运行没有错误,可能在执行效率上存在缺陷,不知各位是否有更好的方法!![code=java]public class CutTest {
public static void main(String[] args) throws Exception {
System.out.println(cut("我ABC汉DEF", 2));
}
public static String cut(String str, int num) throws Exception {
byte[] buf = str.getBytes();
String strC = null;
int n = 0;
if (num <= buf.length && num > 0) {
for (int i = num; i < buf.length; i++) {// 从buf的第num+1个值计算n的值
if (buf > 0) {
// 如果下一个为字母,则跳出循环
break;
}
n++;
}
if (n % 2 == 0) {//当n=0时也执行下面的代码
strC = new String(buf, 0, num);
} else {
strC = new String(buf, 0, num - 1);
}
} else {
strC = "String index out of range!!!";
}
return strC;
}
}[/code]不好意思,更新了好几回,上面应该是从buf的第num+1个值计算n的值,这样保证字母和汉字混合时,截取不出错
[ 本帖最后由 曾公亮 于 2011-10-02 13:32 编辑 ] |