Java中根據字節截取字符串


一、簡介                      

  為了統一世界各國的字符集,流行開了Unicode字符集,java也支持Unicode編碼,即java中char存的是代碼點值,即無論是‘A’還是‘中’都占兩個字節。

  代碼點值:與Unicode編碼表中字符相對應的代碼值;

  代碼單元:就是java中的一個char,可一個以認為是字符編碼的基本單元

二、根據字節截取字符串的代碼實現                  

  public String getSubString(String str, int length) throws Exception {

    int i;

    int n;

    byte[] bytes = str.getBytes("Unicode");      //使用Unicode字符集將字符串編碼成byte序列

    i = 2;      //bytes的前兩個字節是標志位,bytes[0] = -2, bytes[1] = -1, 故從第二位開始

    n = 0;

    for(; i < bytes.length && n < length; i++) {

      if(i % 2 == 1) {

        n++;

      } else {

        if(bytes[i] != 0) {

          n++;

        }

      }

    }

    //去掉半個漢字

    if(i % 2 == 1) {

      if(bytes[i-1] != 0) {

        i = i -1;

      } else {

        i = i + 1;

      }

    }

 

    return new String(bytes, 0, i, "Unicode");

  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM