請問一下高手們,我在做一個程序時遇到這樣一個問題,我要按所給的長度對一個長字符串進行換行如:
-------------------------------------------------------------     這個橫線是要求打印的長度,我是用String.lenth==25 來換行的,即每25個字換一行,可是遇到字符串中有英文或標點就有問題了,它會把漢字和英文都認為是一個長度,而不是漢字2個,英文1個.請問高手們,這個應該怎樣解決?這是正確的
-----------------------------------------------------------
這是ㄧ個測試這是ㄧ個測試這是ㄧ個測試
這是ㄧ個測試這是ㄧ個測試這是ㄧ個測試
這是ㄧ個測試這是ㄧ個測試這是ㄧ個測試這是錯誤的,有英文和標點
-----------------------------------------------------------
這是ㄧ個測試weweewrwwrrw,
這是ㄧ個測試這是ㄧ個測試wgw12
這是ㄧ個測試1213421werwr
23432432sfweewewrwer先謝謝了

解决方案 »

  1.   

    你考虑一下用byte来存这些文字没想过这些问题
    等待高手解决一下把
    也学习学习
      

  2.   

    用byte可以实现,刚才写了一个例子,省略了末尾数组越界及行结尾处理[说明]。
    [说明]就是说如果按你的要求,每行是固定长度的话,结尾不可避免会有半个汉字出现,就会乱码。所以这个你需要做一下判断。jdk1.5.0调试运行通过//save as ByteTest.java
    public class ByteTest
    {
    public ByteTest() 
    {
    try
    {
    String s = new String("sad发送可ajkls见合法fsad阿双方就.123,洒对123");
    byte[] b = s.getBytes();
    for(int i = 0;i < b.length; i += 5)
    {
    System.out.println(new String(b,i,5));
    }
    }catch(Exception e){e.printStackTrace();}
    }
    public static void main(String[] args)
    {
    new ByteTest();
    }
    }
      

  3.   

    试试char[],一个char可以保存一个汉字的
      

  4.   

    高手们啊,郁闷死了,楼上的大侠们的解决方法好像不行啊,sky_boxer(饿鱼骨头)这位朋友给的方法不错,可是我要用什么办法才能判断哪个是汉字呢?如果有这个方法我也就不用转成Byte这种类型了,我直接就可以判断了,还有没有人帮帮忙啊!!!
      

  5.   

    自己判断一下汉字也可以的:
    汉字的标准是第一个字节ascii码>128,第二个字节随意so,从第一个字节(byte)开始判断:
    if(上一个字符(char)不是汉字 && 这个字节ascii>128)
    {
    这个字符=汉字;
    }
    外边得再套一层循环,自己写吧,判断方法就是这样,我以前用c++写过
      

  6.   

    to believefym(暮色,miss,迷失,miss) ( ) 
    有没有看我说明啊?他就是要求长度一致!比如说 "aaaa啊bbbbb不"
    不管5字节一分还是6字节一分总会出现半个汉字!
    除非末尾汉字长度加一字节。那么就要改变楼主原意了。
      

  7.   

    或者放到char[]里面,然后一个一个char输出,用个int counter计数,字母标点+1,汉字+2,
    counter达到行长换行,汉字的判断用它的unicode码判断,范围是从20000到2A6D6