`
yunzhu
  • 浏览: 1141077 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
B2b19957-cda7-3a9e-83a0-418743feb0ca
监控应用服务器
浏览量:109101
2e8be8be-e51f-346c-bcdd-12623c9aa820
Web前端开发
浏览量:119254
Bfa5df64-a623-34b9-85b8-ef3ce2aed758
经典异常的解决
浏览量:203990
社区版块
存档分类
最新评论

判定全角半角(Java & JavaScript)

阅读更多

根据字符的Unicode码判断字符是半角字符还是全角字符

 

 

Java:

/**
 * 半角、全角文字处理工具类
 * 
 * @author 陳峰
 */
public class DbcSbcUtils {

	/**
	 * 半角、全角字符判断
	 * 
	 * @param c
	 *            字符
	 * @return true:半角; false:全角
	 */
	public static boolean isDbcCase(char c) {
		// 基本拉丁字母(即键盘上可见的,空格、数字、字母、符号)
		if (c >= 32 && c <= 127) {
			return true;
		}
		// 日文半角片假名和符号
		else if (c >= 65377 && c <= 65439) {
			return true;
		}
		return false;
	}

	/**
	 * 字符串长度取得(区分半角、全角)
	 * 
	 * @param str
	 *            字符串
	 * @return 字符串长度
	 */
	public static int getLength(String str) {
		int len = 0;
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			if (isDbcCase(c)) { // 半角
				len = len + 1;
			} else { // 全角
				len = len + 2;
			}
		}
		return len;
	}

	/**
	 * 字符串截取(区分半角、全角)
	 * 
	 * @param str
	 *            字符串
	 * @param limit
	 *            长度
	 * @return
	 */
	public static String left(String str, int limit) {
		if (getLength(str) <= limit) {
			return str;
		}
		char[] chars = str.toCharArray();
		int charLenSum = 0;
		String result = "";
		for (int i = 0; i < chars.length; i++) {
			int charLen = isDbcCase(chars[i]) ? 1 : 2;
			if (charLenSum + charLen > limit) {
				return result;
			}
			charLenSum += charLen;
			result += chars[i];
			if (charLenSum == limit) {
				return result;
			}
		}
		return "";
	}

	public static void main(String[] args) {
		System.out.println(left("全角文字", 10));
		System.out.println(left("全角文字判", 10));
		System.out.println(left("全角文字12", 10));
		System.out.println(left("全角文字123", 10));
		System.out.println(left("全角文字判a", 10));
		System.out.println(left("全角文字判断", 10));
	}
}
 

 

JavaScript:

/**
 * 函数名:计算字符串长度
 * 函数说明:计算字符串长度,半角长度为1,全角长度为2
 * @param str 字符串
 * @return 字符串长度
 */
function getStrLen(str){
    var len = 0;
    var i;
    var c;
    for (var i=0;i<str.length;i++){
        c = str.charCodeAt(i);
        if (isDbcCase(c)) { //半角
        	len = len + 1;
        } else { //全角
        	len = len + 2;
        }
    }
    return len;
}

/**
 * 函数名:判断字符是全角还是半角
 * 函数说明:判断字符是全角还是半角
 * @param c 字符
 * @return true:半角 false:全角
 */
function isDbcCase(c) {
	// 基本拉丁字母(即键盘上可见的,空格、数字、字母、符号)
	if (c >= 32 && c <= 127) {
    	return true;
	} 
	// 日文半角片假名和符号
	else if (c >= 65377 && c <= 65439) {
		return true;
	}
	return false;
}
 

 

 

 

 

 

 

 

分享到:
评论
1 楼 求求你帮帮我 2013-05-31  
博主能不能讲解一下原理啊?全角和半角的区别是什么?从哪里开始着手判断?

相关推荐

    【免费题库】华为OD机试 - 字符串序列判定(Java & JS & Python & C & C++).html

    【免费题库】华为OD机试 - 字符串序列判定(Java & JS & Python & C & C++).html

    三角形判定 用javascript 写的。很不错的。关于三角形判定

    三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    JAVA上百实例源码以及开源项目

    JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器...

    JAVA上百实例源码以及开源项目源代码

    JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器...

    测试用例设计白皮书-判定表

    测试用例设计白皮书-判定表 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等等好多知识

    征服RIA:基于JavaScript的Web客户端开发卷二

    本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。Ext篇:能否提供复杂用户界面,是RIA的一个重要判定标准。在本书中,笔者把这一重任交给了Ext。希望读者...

    征服RIA:基于JavaScript的Web客户端开发卷三

    本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。Ext篇:能否提供复杂用户界面,是RIA的一个重要判定标准。在本书中,笔者把这一重任交给了Ext。希望读者...

    JAVA计算器(含有优先级的判定)

    虽然功能简单了些。不过含有优先权的判定。比较方便了!使用了正则表达式。

    java源码包4

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    判定树判定表

    是一个关于怎样用判定树,判定表解决问题的例子

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包2

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java回合制游戏

    本人亲自研发的回合制游戏的基本框架,2000多行,人物属性,技能,背包,商城,冒险等源代码,附带一个打包好的exe...对java初学者很有帮助,希望你能从我的源代码中找到灵感,有对java感兴趣的朋友可以评论联系我!

    网络安全等级保护测评高风险判定指引(等保2.0)讲课讲稿.docx

    网络安全等级保护测评高风险判定指引(等保2.0)讲课讲稿.docx网络安全等级保护测评高风险判定指引(等保2.0)讲课讲稿.docx网络安全等级保护测评高风险判定指引(等保2.0)讲课讲稿.docx网络安全等级保护测评高风险判定...

    java 解析Excel 并判断解析的数据类型__Eclipse工程

    java 解析Excel 并判断解析的数据类型__Eclipse工程,纯手工,无复制

    学生体侧成绩判定管理系统

    学生管理学生体侧成绩判定系统使用说明书 主要功能: 1输入功能;2查询功能;3修改功能;4删除功能; 5统计功能;6显示功能(排序);7退出系统; 使用说明: 1进入系统;运行后会出现密码,输入密码 :2019,方可...

    java根据ip获取国家、地区名称,附带ip地址库

    java根据ip获取国家、地区名称,附带ip地址库

    判定树与判定表

    判定树

    StringUtil.java

    java编程中对字符串的各种方式的处理,包括(空字符串处理、判断是否是空字符串 null和"" 都返回 true、 把string array or list用给定的符号symbol连接成一个字符串、 判定第一个字符串是否等于的第二个字符串中的某...

Global site tag (gtag.js) - Google Analytics