⑴ java怎麼判斷判斷某個欄位中漢字的長度在2到20內
代碼如下:
/**
* 在Java中按位元組獲得字元串長度的兩種方法
*
*/
public class App
{
public static void main( String[] args ) throws UnsupportedEncodingException
{
String str = "只";
System.out.println(getWordCount(str));
System.out.println(getWordCountRegex(str));
System.out.println(getWordCountCode(str,"GBK"));
System.out.println(getWordCountCode(str,"UTF-8"));
}
/*由於是基於Unicode編碼的,因此,一個漢字的長度為1,而不是2。
* 但有時需要以位元組單位獲得字元串的長度。例如,「123abc長城」按位元組長度計算是10,而按Unicode計算長度是8。
* 為了獲得10,需要從頭掃描根據字元的Ascii來獲得具體的長度。如果是標準的字元,Ascii的范圍是0至255,如果是漢字或其他全形字元,Ascii會大於255。
* 因此,可以編寫如下的方法來獲得以位元組為單位的字元串長度。*/
public static int getWordCount(String s)
{
int length = 0;
for(int i = 0; i < s.length(); i++)
{
int ascii = Character.codePointAt(s, i);
if(ascii >= 0 && ascii <=255)
length++;
else
length += 2;
}
return length;
}
/*基本原理是將字元串中所有的非標准字元(雙位元組字元)替換成兩個標准字元(**,或其他的也可以)。這樣就可以直接例用length方法獲得字元串的位元組長度了*/
public static int getWordCountRegex(String s)
{
s = s.replaceAll("[^\\x00-\\xff]", "**");
int length = s.length();
return length;
}
/*按特定的編碼格式獲取長度*/
public static int getWordCountCode(String str, String code) throws UnsupportedEncodingException{
return str.getBytes(code).length;
}
}
⑵ 如何計算中文字元的長度java
通過自String自帶的length()方法獲取字元串長度。
String a="abcdefg";//定義一個字元串
int len = a.length();//通過length獲取字元串長度,這里等於7
length()該方法返回此字元串的長度。長度是等於Unicode代碼單元中的字元串的數目。
⑶ java字元串長度怎麼算
通過String自帶的length()方法獲取字元串長度。
Stringa="abcdefg";//定義一個字元回串
intlen=a.length();//通過length獲取字元串長度,這里等於7
⑷ java中獲取含中文的字元串長度
逐個char取,判斷ascii值范圍,ASCII算一個、如果是非ASCII范圍認為是中文則算2個
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
⑸ JAVA字元串長度
in characters這個應該指的是單位,要求應該就是用length輸出就好了,如果你只想要字回母的長度,你可答以用空「」替代所有的非字母再統計長度,myString.replace(「[^a-zA-Z]」,「")
關於正則表達式http://regexpal.com/可以在線嘗試
⑹ java如何某個字元串長度大於10,並且能判斷漢字的個數
public class StringLen {
/**
* @param args
*/
public static void main(String[] args) {
String str="我是中國ren";//你需要判斷的版字元串權
String len="";
int j=0;
if(str.length()>10)
System.out.println("該字元串大於10");
char[] c=str.toCharArray();
for(int i=0;i<c.length;i++){
len=Integer.toBinaryString(c[i]);
if(len.length()>8)
j++;
}
System.out.println("共有中文字元:"+j);
}
}
⑺ Java中文字元所佔的位元組數是多少
採用或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。
⑻ java中如何計算一個字元串的byte長度(一個漢字多少字元)
中文並不一定來是占兩源個位元組的,具體佔多少位元組是跟具體的編碼方式相關的。
比如說:GB2312、GBK、GB18030
編碼是佔用兩個位元組的,但是
UTF-8
編碼的話至少需要佔用三個位元組。
有一個簡單方法,就是把大於
0xff
的字元都作為兩個字元(當然是在
GBK
環境下)
Java
code
publicstaticint
count(String
str)
{
if(str
==null||
str.length
==0)
{
return0;
}
int
count
=0;
char[]
chs
=
str.toCharArray();
for(int
i
=0;
i
<
chs.length;
i++)
{
count
+=
(chs[i]
>0xff)
?2
:
1;
}
return
count;
}
或者你直接使用
int
len
=
str.getBytes("gbk");上面代碼假設你的資料庫編碼格式是
GBK
的,而不是
UTF-8
的,如果是
UTF-8
的話,上面的代碼無效!1位元組等於8比特,一個字母是1位元組,而一個漢字要用2個位元組。一個漢字=2個字元
⑼ java中如何計算一個字元串的byte長度(一個漢字多少字元)
中文並不一定是占兩個位元組的,具體佔多少位元組是跟具體的回編碼方式相關的。 比如說:GB2312、答GBK、GB18030 編碼是佔用兩個位元組的,但是 UTF-8 編碼的話至少需要佔用三個位元組。 有一個簡單方法,就是把大於 0xff 的字元都作為兩個字元(當然是在 GBK 環境下) Java code publicstaticint count(String str) { if(str ==null|| str.length ==0) { return0; } int count =0; char[] chs = str.toCharArray(); for(int i =0; i < chs.length; i++) { count += (chs[i] >0xff) ?2 : 1; } return count; } 或者你直接使用 int len = str.getBytes("gbk");上面代碼假設你的資料庫編碼格式是 GBK 的,而不是 UTF-8 的,如果是 UTF-8 的話,上面的代碼無效!1位元組等於8比特,一個字母是1位元組,而一個漢字要用2個位元組。一個漢字=2個字元
⑽ Java中文字元所佔的位元組數是多少
Java語言中,中文字元所佔的位元組數取決於字元的編碼方式,一般情況下,採用ISO8859-1編碼方式時,一個中文字元與一個英文字元一樣只佔1個位元組;採用GB2312或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。我們可以通過String類的getBytes(String
charsetName)方法來獲取到字元串以指定編碼方式編碼後所得到的位元組數組,然後位元組數組的長度就是該字元串在指定編碼方式下所佔的位元組數。下面為一個測試示例:
public static void main(String []args) throws UnsupportedEncodingException {
// 運行結果:2
System.out.println("測試".getBytes("ISO8859-1")。length);
// 運行結果:4
System.out.println("測試".getBytes("GB2312")。length);
// 運行結果:4
System.out.println("測試".getBytes("GBK")。length);
// 運行結果:6
System.out.println("測試".getBytes("UTF-8")。length);
}
注意:String類的不帶參數的getBytes()方法會以程序所運行平台的默認編碼方式為准來進行轉換,在不同平台下就會有不同的結果,因此建議使用指定編碼方式的getBytes(String charsetName)方法。