我写了一个方法感觉实在是太笨了,希望有大侠能给出简便高效的方法
//编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,
//如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
public static void getbyte(String s){
/*
* 把要判断的字符串转换成这种形式:汉字就是--*我。字母仍是字母的形式
* 注:字节数只考虑0-9,。
*/
StringBuilder sb=new StringBuilder();
String ziMuJi="qwertyuiopkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
char ch[]=s.toCharArray();
for(int i=0;i<ch.length-1;i++){
if(!ziMuJi.contains(ch[i]+"")){
sb.append('*').append(ch[i]);
}
else{
sb.append(ch[i]);
}
}
int ByteNo=Integer.parseInt(s.substring(s.length()-1, s.length()))-1;
//如果字节数索引对应的是*则取0到索引处字串,即舍掉汉字。去除*打印出来
if(sb.charAt(ByteNo)=='*'){
String result=sb.substring(0,ByteNo).replace("*","");
System.out.println(result);
}else{
//如果字节数索引对应的不是*则取0到索引处+1字串,即保留汉字。去除*打印出来
if(sb.charAt(ByteNo)=='*'){
String result=sb.substring(0,ByteNo+1).replace("*","");
System.out.println(result);
}
}
} |
|