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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"));


/*由于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 = 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;

参考技术A 。。。。string.length()

Oracle 判断表字段里字符串是不是含有汉字

参考技术A 两个方法:
1.用到正则中的regexp_like
个人感觉可能是regexp_like(字段,'[^[:alphanum:]]')
意思是在字段中匹配非0-9,a-z,A-Z的字段,如果能匹配到,那么可以认为是汉字,否则就不是汉字,当然如果字段中还包含符号,比如加减号什么的,那么那么可能更麻烦一些。
2.用lengthb,与length比长度。如果二者长度相等,那么就没有中文字符(因为中文字符一个占用两个字节)。如果lengthb长度大于length长度,那么一般就说明里面存在中文字符。

以上是关于Java怎么判断判断某个字段中汉字的长度在2到20内的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 判断表字段里字符串是不是含有汉字

js 如何判断字符长度 (包括汉字,英文字符)

判断字符串中是不是含有中文

判断字符串是不是是中文

JPA怎么判断一个字段是不是存在?

oracle sql 判断 字段是不是是汉字