Java 按字节获得字符串(中文)长度
2015-10-30 10:57
633 查看
引自:/article/3792700.html
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; } }
相关文章推荐
- JAVA语法-java.util.Date和java.sql.Date的区别及应用
- java 常用的东西
- C与java的区别
- JAVA 操作xml的方法
- java.io.File中的绝对路径和相对路径
- java.io.File中的绝对路径和相对路径
- 凯撒密码的java实现
- Spring简介
- 《java8函数式编程》——流
- JAVA生成随机数
- Java中Map的用法
- 一致性哈希算法与java实现
- win7下安装maven以及在myeclipse里配置maven(一)
- Java的垃圾回收
- JAVA中常用数据类型转换
- spring mvc 文件上传 form表单
- java 内存——运行时数据区域
- 关于java接口的一些重要的点
- java中获取根异常并进行分发处理
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)