Java 按字节获得字符串(中文)长度
2017-10-10 15:04
309 查看
Java 按字节获得字符串(中文)长度
引自:http://songjianyong.iteye.com/blog/1552973
引自:http://songjianyong.iteye.com/blog/1552973
package com.yang.string; import java.io.UnsupportedEncodingException; /** * 在Java中按字节获得字符串长度的两种方法 * */ public class LengthDemo { public static void main( String[] args ) throws UnsupportedEncodingException { String str = "123abc中国,,"; 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 按字节获得字符串(中文)长度
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在 Java中按字节获得字符串长度的两种方法
- 在 Java中按字节获得字符串长度的两种方法
- java中按字节获得字符串长度的两种方法 Java问题通用解决代码
- javaSE-基础篇-如何获得中文英文混合字符串的字节长度
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的三种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- Java 判断中文字符串长度
- 获得字符串长度(中文字符占2)
- Java按字节长度截取字符串
- 获得字符串实际长度,汉字占用2个字节。
- Java实现按字节长度截取字符串
- 获得字符串长度(双字节的汉字按2计算)
- Java字符串找出4个字节长度的字符