<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    金陵之風塵

    灰塵,也有生活;
    它們在風中飄著,在煙中戀愛,在暖氣上撫摸;
    它們在好幾個地方找我……
    posts - 5, comments - 13, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    按字節截取含雙字節的字符串!

    Posted on 2006-10-13 09:57 風塵仆仆 閱讀(2328) 評論(6)  編輯  收藏 所屬分類: Java
    String.substring(0, n)函數返回該字符串前n個字符的新字符串,但如果只想返回前n個字節,而字符串中又含有中文等雙字節字符怎么辦呢,我寫了個函數,不過只假定參數字符串中只含有單字節和雙字節字符,不包含4字節的Unicode32。

    例如:"我ABC是中國人DEF",截取5個字節應返回"我ABC",截取6個字節應返回"我ABC",截取7個字節應返回"我ABC是"。

    函數中主要是使用String.getBytes()判斷一個字符包含單節還是雙字節,因為要多次創建String字符,速度比較慢,誰有更好的方法也請給出建議。

    ?1?static?final?String?subStringbyBytes(final?String?str,?final?int?bytes)?{
    ?2?????int?bytesCounter?=?0;
    ?3?????String?resStr?=?null;
    ?4?
    ?5?????//?首字符為雙字節,?而要求輸出一個字節
    ?6?????if(bytes?==?1)?{
    ?7???????String?aChar?=?str.substring(0,?1);
    ?8???????byte[]?bytesInChar?=?aChar.getBytes();
    ?9?
    10???????if(bytesInChar.length?==?2)
    11?????????return?"";
    12?????}
    13?
    14?????for(int?i?=?0;?i?<?str.length();?i++)?{
    15???????String?aChar?=?str.substring(i,?i?+?1);
    16???????byte[]?bytesInChar?=?aChar.getBytes();
    17?
    18???????if(bytesInChar.length?==?1)?{
    19?????????//?single?byte?character
    20?????????++bytesCounter;
    21?
    22?????????if(bytesCounter?==?bytes)?{
    23???????????resStr?=?str.substring(0,?i?+?1);
    24???????????break;
    25?????????}
    26???????}
    27???????else?if(bytesInChar.length?==?2){
    28?????????//?double?bytes?character
    29?????????bytesCounter?+=?2;
    30?
    31?????????if(bytesCounter?>?bytes)?{
    32???????????resStr?=?str.substring(0,?i);
    33???????????break;
    34?????????}
    35?
    36?????????if(bytesCounter?==?bytes)?{
    37???????????resStr?=?str.substring(0,?i?+?1);
    38???????????break;
    39?????????}
    40???????}
    41?????}
    42?
    43?????return?resStr;
    44???}

    評論

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2006-10-13 13:55 by 1
    現在去www.mylinux.com.cn網站趣味問答,做題目,獎積分.積分還能直接購物呢.提供給你一個學習的機會,對軟件編程人員有很大的幫助哦

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2006-10-13 21:12 by Web 2.0 技術資源
    效率太低了...........

    給個簡單的處理方式吧~~~

    public static String getShorterString( String input , int bytes )
    {
    try
    {
    byte[] array = input.getBytes("GBK");
    if( bytes >= array.length ) return input;
    String result = new String(array , 0 , bytes ,"GBK");
    return result.length() > 0 ? result : new String(array , 0 , bytes - 1 ,"GBK");
    }
    catch (UnsupportedEncodingException e)
    {
    return input;
    }
    }

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2006-10-16 00:40 by yyuan
    是的,我也感覺我的代碼效率比較低,謝謝!

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2006-10-18 15:43 by 123bingbing
    增開7群,號碼 30440732
    8群 30756649
    9群 30178567
    10群 28694497

    我們的qq群:15096318 學習程序的都可以來

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2008-06-20 09:33 by rakor
    @Web 2.0 技術資源
    兄弟,你寫的是JAVA代碼吧~~~~~~~

    # re: 按字節截取含雙字節的字符串!  回復  更多評論   

    2008-06-20 09:35 by rakor
    不好意思,走錯地方了,見諒

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV无码成人网站久久精品大| 亚洲妇熟XXXX妇色黄| 亚洲AV无码专区国产乱码电影| 亚洲国产日韩在线一区| 边摸边脱吃奶边高潮视频免费| 久久国产乱子免费精品| 天天操夜夜操免费视频| 亚洲熟女一区二区三区| 亚洲午夜理论片在线观看| 大地影院MV在线观看视频免费 | 国产在线观看免费视频软件| a毛片基地免费全部视频| 久久国产成人亚洲精品影院| 亚洲一级黄色大片| 国产精品成人69XXX免费视频| xxxx日本免费| 国产gv天堂亚洲国产gv刚刚碰 | 好吊色永久免费视频大全 | 久久国产免费福利永久| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲色大情网站www| 午夜精品免费在线观看| 亚洲精品老司机在线观看| 亚洲冬月枫中文字幕在线看| 成年女人A毛片免费视频| 最近中文字幕mv免费高清电影| 国产亚洲综合一区柠檬导航| 亚洲AV色无码乱码在线观看| 免费人成视频在线观看网站| MM131亚洲国产美女久久| 亚洲中文字幕无码亚洲成A人片| 国产一级淫片a免费播放口| 国产男女性潮高清免费网站 | 亚洲入口无毒网址你懂的| 久久久久久国产精品免费免费男同| 国产一级大片免费看| 亚洲中文字幕无码一去台湾| 免费A级毛片在线播放| 国产偷国产偷亚洲清高动态图| 小说专区亚洲春色校园| 免费看韩国黄a片在线观看|