1. 程式人生 > >在Java中按位元組獲得字串長度的兩種方法

在Java中按位元組獲得字串長度的兩種方法

本文為原創,如需轉載,請註明作者和出處,謝謝!

由於Java是基於Unicode編碼的,因此,一個漢字的長度為1,而不是2。但有時需要以位元組單位獲得字串的長度。例如,“123abc長城”按位元組長度計算是10,而按Unicode計算長度是8。為了獲得10,需要從頭掃描根據字元的Ascii來獲得具體的長度。如果是標準的字元,Ascii的範圍是0至255,如果是漢字或其他全形字元,Ascii會大於255。因此,可以編寫如下的方法來獲得以位元組為單位的字串長度。
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->public
intgetWordCount(Strings)
{
intlength=0;
for(inti=0;i<s.length();i++)
{
intascii=Character.codePointAt(s,i);
if(ascii>=0&&ascii<=255)
length
++;
else
length
+=2;

}
returnlength;

}

當然,也可以採用正則表示式來簡化上面的方法,程式碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->public
intgetWordCount(Strings)
{

s
=s.replaceAll("[^//x00-//xff]","**");
intlength=s.length();
returnlength;
}
上面程式碼的基本原理是將字串中所有的非標準字元(雙位元組字元)替換成兩個標準字元(**,或其他的也可以)。這樣就可以直接例用length方法獲得字串的位元組長度了。



新浪微博手機客戶端(Android/Ophone版)釋出