在Java中按字节获得字符串长度的两种方法
来源:互联网 发布:大话西游手游藕丝数据 编辑:程序博客网 时间:2024/06/04 19:42
由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。因此,可以编写如下的方法来获得以字节为单位的字符串长度。
当然,也可以采用正则表达式来简化上面的方法,代码如下:
public 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;
}
{
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;
}
当然,也可以采用正则表达式来简化上面的方法,代码如下:
public int getWordCount(String s)
{
s = s.replaceAll("[^\\x00-\\xff]", "**");
int length = s.length();
return length;
}
{
s = s.replaceAll("[^\\x00-\\xff]", "**");
int length = s.length();
return length;
}
上面代码的基本原理是将字符串中所有的非标准字符(双字节字符)替换成两个标准字符(**,或其他的也可以)。这样就可以直接例用length方法获得字符串的字节长度了。
【原文地址:http://www.blogjava.net/nokiaguy/archive/2010/04/11/317982.html】
=============
转者注:通过此方法可以实现中文英文都有时的限制长度输入(比如最长4个汉字,或8个字符)。对于文本框的控制很常见,随便贴个:android 中如何限制 EditText 最大输入字符数
阅读全文
0 0
- 在 Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在 Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- 在Java中按字节获得字符串长度的两种方法
- Java 按字节获得字符串(中文)长度
- JAVA中获得一个有中文的字符串的字节长度
- 用Java实现按字节长度截取字符串的方法
- 用Java实现按字节长度截取字符串的方法
- 用Java实现按字节长度截取字符串的方法
- Java实现按字节长度截取字符串的方法
- Java实现按字节长度截取字符串的方法
- 获得字符串对应的字节长度
- 获得一串字符串数据长度的高位字节和 低位字节的方法
- 上传大文件失败问题记录
- SQLSTATE[HY000] [1130] Host '127.0.0.1' is not allowed to connect to this MySQL server怎么解决?
- 用jQuery实现简单的表单验证
- UVa11292
- 解决使用libhdfs.so连接hdfs出错问题java.lang.ClassNotFoundException: org.apache.hadoop.fs.F
- 在Java中按字节获得字符串长度的两种方法
- redis设置开机启动
- 2017.10.13
- java变量类型的讨论
- 解决wordpress 浏览次数位置调整问题(wp postviews 插入代码)
- SQL 学习笔记
- Android 获取系统服务的源代码分析
- PHP数组递归排序
- docker版nexus安装及使用