如何用正则表达式来求一个串的长度

super_man1991 2011-01-28 04:37:15
如题,包括中文 怎么求?? 比如我想求“我abc”的长度。并不是字符串的长度,而是按GBK 或者UTF-8的标准的长度 这个应该是5 大家帮帮忙。谢谢了。
...全文
267 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 heardy 的回复:]
转UTF-8 一个中文算3个长度诶。。 纳闷
[/Quote]

没什么纳闷的,这个是UTF-8,不是Unicode。UTF-8字母1个字节,所以很多*ML(html,xml)文档,都是用utf-8,因为大部分*ml,里面都是<xxxx>占据的空间
heardy 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shine333 的回复:]
1 在这个问题上,忘记正则表达式
2 准确的提法不是字符串长度(这个长度一般就是指字符长度),而是其字节长度


Java code
System.out.println("我abc".getBytes("GBK").length);
System.out.println("我abc".getBytes("UTF-8").length);
[/Quote]
转UTF-8 一个中文算3个长度诶。。 纳闷
magong 2011-01-28
  • 打赏
  • 举报
回复
也是建议不要用正则来做,尤其是字节长度这个问题
heardy 2011-01-28
  • 打赏
  • 举报
回复

/**
* 获取字符串的长度,如果有中文,则每个中文字符计为2位
*
* @param value
* 指定的字符串
* @return 字符串的长度
*/
public static int length(String value) {
int valueLength = 0;
String chinese = "[\u0391-\uFFE5]";
/* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */
for (int i = 0; i < value.length(); i++) {
/* 获取一个字符 */
String temp = value.substring(i, i + 1);
/* 判断是否为中文字符 */
if (temp.matches(chinese)) {
/* 中文字符长度为2 */
valueLength += 2;
} else {
/* 其他字符长度为1 */
valueLength += 1;
}
}
return valueLength;
}


试试看吧
afeey999 2011-01-28
  • 打赏
  • 举报
回复
#2楼 正解
dingxinzhang 2011-01-28
  • 打赏
  • 举报
回复
正则不知道。。。。等待
str.getBytes().length
shine333 2011-01-28
  • 打赏
  • 举报
回复
1 在这个问题上,忘记正则表达式
2 准确的提法不是字符串长度(这个长度一般就是指字符长度),而是其字节长度

    System.out.println("我abc".getBytes("GBK").length);
System.out.println("我abc".getBytes("UTF-8").length);
Inhibitory 2011-01-28
  • 打赏
  • 举报
回复
正则?等着被围观吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧