Java 判断中文字符串长度
2017-02-23 15:43
267 查看
package cn.com.songjy.test; import java.io.UnsupportedEncodingException; /** * 在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; } }
汉字中有生僻字:“掱”,结果计算出长度为2、UTF-8 长度3。
相关文章推荐
- java 判断含有中文的字符串的长度
- java 判断中文字符串长度
- java 判断含有中文的字符串的长度
- java 判断含有中文的字符串的长度
- java 判断中文字符串长度
- java 判断含有中文的字符串的长度
- java 判断含有中文的字符串的长度
- java判断中文字符串长度的简单实例
- java判断中文字符串长度
- java中判断字符串真实长度(中文2个字符,英文1个字符)的方法
- java 判断含有中文的字符串的长度
- java 判断中文字符串长度
- java中用正则表达式判断字符串是否包含中文
- java判断获取到的中文字符串是否乱码
- java中获取包含中文字符的字符串长度
- JAVA判断字符串中是否包含中文
- JS/Java中,判断字符串是否包含中文
- JAVA中获得一个有中文的字符串的字节长度
- 一个中文汉字算两位,一个英文字母算一位,计算中文和英文混合的字符串长度。字符串:String str = "我不好java";
- java中判断字段真实长度(中文2个字符,英文1个字符)的方法