黑马程序员技术交流社区
标题:
关于入学基础测试题的一个问题
[打印本页]
作者:
齐银春
时间:
2012-11-24 18:39
标题:
关于入学基础测试题的一个问题
虽说最后弄出来了 可我再次用gbk解码编码 当截取六个字节时总是无法截取完整 请大家帮忙看一下有什么错误
import java.io.UnsupportedEncodingException;
public class Test10 {
/**
* 10、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
* 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,
* 6,应该输出为“我ABC”而不是“我ABC+汉的半个”
*
* @param args
* @throws Exception
*/
private static String cutString(String str,int index) throws Exception{
byte[] buf=str.getBytes("gbk");
int count=0;
for(int x=index;x>=0;x--){
if(buf[x]<0)
count++;
else
break;
}
if(count%2==0)
return new String(buf,0,index,"gbk");
else
return new String(buf,0,index-1,"gbk");
}
public static void main(String[] args) throws Exception {
String str="我ABC汉DEF";
String str1=cutString(str,6);
System.out.println(str1);
}
}
作者:
潘天功
时间:
2012-11-24 20:19
我以前写过的、你看看吧,也许有用
import java.util.Scanner;
/*
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截取半个,如“我ABC”4,应该截取为“我AB”,输入“我ABC汗DEF”,6,应该输出为“我ABC”,而不是“我ABC+汗的半个字”。
*/
public class JieQu
{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("输入要截取的字符:");
String str =sc.nextLine();
System.out.println("输入要截取的长度:");
int num = sc.nextInt();
Substring substr = new Substring(str,num);
substr.splitit();
}
}
class Substring
{
private String str;//要截取的字符
private int bytenum;//截取个数
public Substring(){}
public Substring(String str,int bytenum){
this.str = str;
this.bytenum = bytenum;
}
public void splitit(){
byte[] bt = str.getBytes();
System.out.println("字符串的长度为:"+bt.length);
if(bytenum>1){
if(bt[bytenum]<0){
//调用String方法的默认字符集解码byte 子数组,构造一个新的 String
String substrx = new String(bt,0,--bytenum);
System.out.println(substrx);
}
else{
String substrex = new String(bt,0,bytenum);
System.out.println(substrex);
}
}
else{
if(bytenum==1){
if(bt[bytenum]<0)
{
String substr1=new String(bt,0,++bytenum);
System.out.println(substr1);
}
else
{
String substr2=new String(bt,0,bytenum);
System.out.println(substr2);
}
}
else
{
System.out.println("输入错误!!!请输入大于零的整数:");
}
}
}
}
作者:
齐银春
时间:
2012-11-24 21:50
潘天功 发表于 2012-11-24 20:19
我以前写过的、你看看吧,也许有用
import java.util.Scanner;
/*
这个我用utf-8正常 但gbk有时候会出错 你的也应该是默认gbk编码的吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2