Java怎么判断判断某个字段中汉字的长度在2到20内

Python013

Java怎么判断判断某个字段中汉字的长度在2到20内,第1张

代码如下:

/**

* 在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"))

}

/*由于Java是基于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 = 0i <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

}

}

简单实现代码如下:

public class StringLength {

/**

* 获取字符串的长度,如果有中文,则每个中文字符计为2位

* @param value 指定的字符串

* @return 字符串的长度

*/

public static int length(String value) {

int valueLength = 0

String chinese = "[\u0391-\uFFE5]"

/* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */

for (int i = 0i <value.length()i++) {

/* 获取一个字符 */

String temp = value.substring(i, i + 1)

/* 判断是否为中文字符 */

if (temp.matches(chinese)) {

/* 中文字符长度为2 */

valueLength += 2

} else {

/* 其他字符长度为1 */

valueLength += 1

}

}

return valueLength

}

public static void main(String args[]){

String str = "hello你好"

System.out.println(StringLength.length(str))

}

}