在项目开发中经常碰到到输入字符的校验,特别是中英文混合在一起的校验。而为了满足校验的需求,有时需要计算出中英文的长度。

本文将通过几种常用的方法实现长度的计算:

import java.io.UnsupportedEncodingException;

/**

* 中英文校验的处理

* @author a123demi

*

*/

public class EnChValidate {

public static void main(String[] args){

String validateStr= "中英文校验abcde接口ii";

int bytesStrLength = getBytesStrLength(validateStr);

int chineseLength = getChineseLength(validateStr);

int regexpLength = getRegExpLength(validateStr);

System.out.println("getBytesLength:" + bytesStrLength + ",chineseLength:" + chineseLength +

",regexpLength:" + regexpLength);

}

/**

* 根据字符编码 字节数生成一个临时的字符串

* @param validateStr

* @return

*/

public static int getBytesStrLength(String validateStr){

String tempStr = "";

try {

tempStr = new String(validateStr.getBytes("gb2312"),"iso-8859-1");

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return tempStr.length();

}

/**

* 获取字符串的长度,如果有中文,则每个中文字符计为2位

*

* @param validateStr

* 指定的字符串

* @return 字符串的长度

*/

public static int getChineseLength(String validateStr) {

int valueLength = 0;

String chinese = "[\u0391-\uFFE5]";

/* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */

for (int i = 0; i < validateStr.length(); i++) {

/* 获取一个字符 */

String temp = validateStr.substring(i, i + 1);

/* 判断是否为中文字符 */

if (temp.matches(chinese)) {

/* 中文字符长度为2 */

valueLength += 2;

} else {

/* 其他字符长度为1 */

valueLength += 1;

}

}

return valueLength;

}

/**

* 利用正则表达式将每个中文字符转换为"**"

* 匹配中文字符的正则表达式: [\u4e00-\u9fa5]

* 匹配双字节字符(包括汉字在内):[^\x00-\xff]

* @param validateStr

* @return

*/

public static int getRegExpLength(String validateStr){

// String temp = validateStr.replaceAll("[\u4e00-\u9fa5]", "**");

String temp = validateStr.replaceAll("[^\\x00-\\xff]", "**");

return temp.length();

}

}

java 中英文长度_Java 计算中英文长度的若干种方法相关推荐

  1. java 不知道类名_Java 中获取类名的三种方法,你知道几种?

    之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里 ...

  2. java 读取控制台_Java从控制台读入数据的几种方法总结

    这里记录Java中从控制台读入信息的几种方式,已备后查! (1)JDK 1.4(JDK 1.5和JDK 1.6也都兼容这种方法) public class TestConsole1 { public ...

  3. java保留小数_java保留两位小数4种方法

    java保留两位小数4种方法 方法一:String的format方法(推荐) double f = 111231.5585; System.out.println(String.format(&quo ...

  4. java获取文件大小_Java实现获取文件大小的几种方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.i ...

  5. java时间代码_java获取当前时间的四种方法代码实例

    这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一种:Date类 public class ...

  6. java当前时间_java 获取当前时间的三种方法

    总结java里面关于获取当前时间的一些方法 System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响, ...

  7. java 取名字_Java 中获取类名的三种方法,你知道几种?

    之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName()返回的是虚拟机里面 ...

  8. java 复制文件_Java中复制文件的4种方法

    Java拷贝文件是一种非常常见的操作.但是java.io.File类没有任何快捷方法可以将文件从源复制到目标文件.在这里,我们将了解学习可以在java中复制文件的四种不同方法. 方法一:使用Strea ...

  9. java 获取类名_Java中获取类名的3种方法!

    获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...

  10. java文件拷贝_Java实现文件拷贝的4种方法

    第一种方法:古老的方式 public static long forJava(File f1,File f2) throws Exception{ long time=new Date().getTi ...

最新文章

  1. WeScale 技术篇 —— mpvue 与微信小程序的火花
  2. C语言 数组长度计算 - C语言零基础入门教程
  3. node 后台文章编辑器_我如何使用Node从报纸网站上刮掉7000篇文章
  4. 【假期重磅福利】更新三个Oracle系列课程,共153课时,最低免费获取
  5. eclipse创建maven
  6. tesseract如何在Linux下卸载,Tesseract装配
  7. php unix时间戳单位,PHP对于Unix时间戳的转换
  8. Python 深度学习常用包汇总
  9. LoadRunner “add measurements”(添加度量)菜单问题
  10. Python 垃圾回收机制详解
  11. 彩色照片转化为黑白照片
  12. 微软浏览器edge对日期Date对象format(yyyy-mm-dd)/getDiff()方法不识别
  13. Unity 彩色打印日志信息
  14. animejs走马灯_web前端攻城狮超爱的JS动画库插件—anime.js
  15. 内网穿透工具-venom
  16. 世界一流水平的中国 10 大顶尖科学家
  17. oracle使用PLSQL导出dmp文件一闪而过的解决办法
  18. 下载的视频花屏怎么办?其实很简单!!!
  19. 一篇学完:GAMES101:现代计算机图形学入门 学习笔记
  20. 分布式服务架构:原理 设计与实践(读书总结)

热门文章

  1. 想学一门技术,学java有前途吗?
  2. unity3d 人物对话_Unity 3D游戏-NPC对话系统With XML
  3. java 定义泛型方法_Java中泛型方法的定义
  4. Js 中实现重定向的几种方式
  5. C# 后台js重定向Response.Write
  6. 数据揭示《哪吒之魔童降世》火爆背后的艰辛:66个剧本100次修改,1600人通宵5年...
  7. MATLAB环境下基于深度学习的语音降噪方法
  8. novoton-msys_init函数
  9. java outofmemory怎么解决_java.lang.OutOfMemoryError异常解决方法
  10. 对四旋翼无人机飞行的认识(飞行控制原理)