编一个函数,两个参数一个字符串,一个是要截取的字符串个数,按照数字对字符串的进行截取,
如: ABC汉.数字是3则输出ABC,如果是4则还是输出ABC,不能输出半个汉字.

解决方案 »

  1.   

    private static String cut(String str, int len) {
            String retstr = str.substring(0, len);
            while(retstr.getBytes().length > len) {
                retstr = retstr.substring(0, retstr.length() - 1);
            }
            return retstr;
        }楼主客气了。
      

  2.   

    一个可行的方法:
    利用reaplaceAll方法,把字符串中的汉字全用空格替换。
    然后取字符串长,在这里面把空格删除(如果不要空格的话)
      

  3.   

    我已经有比较完美的解决办法,但为了防止不给分的情况发生,如下贴:
    http://community.csdn.net/Expert/topic/5106/5106302.xml?temp=.2036707
    请先给分,我再贴我的方法。如果方法无效、不好,我把分给回你。强烈抗议赖分行为!
    编号:243941 发送者:yyfeel 发送时间:2006-10-23 16:02:14 删除  回复 
    接受者:gzpoplar 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要 
    内容 能给多少给多少,还请赐教编号:246630 发送者:gzpoplar 发送时间:2006-10-27 13:31:51 删除  回复 
    接受者:w5552 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要 
    内容 不给我分? 编号:244972 发送者:gzpoplar 发送时间:2006-10-25 12:25:43 删除  回复 
    接受者:yyfeel 重要性:重要性:1 非常不重要重要性:2 不重要重要性:3 一般重要性:4 重要重要性:5 非常重要 
    内容 Re:能给多少给多少,还请赐教IP数据表增加2个字段:ipstartlong, ipendlong 
    略............................................
    最好短期内不要公开,虽然比较滥,但很管用。
      

  4.   

    YidingHe(机枪兵)
    你的只是能解决汉字在最后的情况!不能处理中间的情况!
      

  5.   

    这还是不太难的
    用个比较土的办法是 先把string转化为byte 当然用gb2312了  这样汉字就是负的数了。当然汉字是两位,其他符号是一位,那么就在其他符号前加个(byte)i (i=128)
    当你输入一个数时,加一倍,比如是5 那么就是10了。 这个时候你判断 如果在10时是负的,那么在真正取的时候就减1,那么就使4了,还有记的既然不要汉字,就不负数不输出。
    比如字符串 "活动,123@A好"。你输入4时,就应该输出 ",1"。思路应该是正确的。
    具体算法 楼主自己实现霸。我这个思路解决了oracle 中文显示问题!
    (后记,如果输入的标点符号是中文的,上述情况下 输出 "1")
      

  6.   

    好吧我改了一下:    private static String cut(String str, int len) {
            String retstr = str.substring(0, Math.min(len, str.length()));
            while(retstr.getBytes().length > len) {
                retstr = retstr.substring(0, retstr.length() - 1);
            }
            return retstr;
        }我的方法我试过的,我的结果是:cut("中3国567", 4) = "中3"   //“国”字算一半
    cut("中3国567", 7) = "中3国56"
    cut("中华人民234共和国", 5) = "中华"  //“人”字算一半如果不对的话,莫非楼主的真实意思是“只要解决汉字在最后的情况,不要处理中间的情况”?
      

  7.   

    请问:Math.min(len, str.length()是什么意思?
      

  8.   

    gzpoplar(poplar)
    等你的答案!!!
      

  9.   

    public static String sub(String src, int len) {
    String result = null;
    if (null != src) {
    result = src;
    while (result.getBytes().length > len) {
                result = result.substring(0, result.length() - 1);
    }
    }
    return result;
    }