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

判定全角半角(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

    华为OD机试C卷- 字符串序列判定(Java & JS & Python & C).md-私信看全套OD代码及解析

    下面分别给出Java、Python和JavaScript三种语言的示例代码实现。 ##### Java示例代码 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = ...

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

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

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

    【JAVA计算器(含有优先级的判定)】 在编程领域,创建一个计算器程序是常见的学习实践,尤其是对于初学者而言。这个“JAVA计算器(含有优先级的判定)”项目旨在实现一个能够处理基本数学运算并考虑运算符优先级的...

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

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

    软件工程pdl,判定树,判定表

    软件工程中的判定表、判定树和过程设计语言(PDL)的应用 判定表是一种形式化的决策表达方式,由四部分组成:左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种...

    判定树判定表

    **判定树和判定表是两种常用的逻辑决策工具,它们在软件工程、数据分析和管理决策等领域广泛应用。** **一、判定树(Decision Tree)** 判定树是一种图形化表示决策过程的方法,它通过树枝状结构来展示各种可能的...

    Java实现麻将算法

    自己根据其他资源,加上自己的优化,实现136张麻将牌的算法

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

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

    2022最新java面试题大全

    2. & 和 && 的区别:& 是逻辑与,&& 是短路与,当出现一个 false 时,发生短路,判定结果为 false;& 还可以用作位运算符。 抽象类和普通类 1. 抽象类和普通类的区别:抽象类可以有抽象方法,也可以有普通方法,...

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

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

    JavaScript五子棋

    3. 游戏规则检查:每次落子后,检查当前棋局是否有连成五子的情况,如果有则判定该方胜利。 4. 轮流下棋:确保双方交替进行,通常通过跟踪当前下棋的玩家(通常用一个变量表示玩家颜色)来实现。 5. 清除棋盘:提供...

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

    在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。Eclipse作为Java开发的主流IDE,提供了丰富的工具和支持来完成这项工作。本项目名为"java 解析Excel 并判断解析...

    javaScript判定提交内容是否超过数据库长度

    在JavaScript中,判定提交内容是否超过数据库长度需要注意如下知识点: 1. 字符编码:在JavaScript中处理字符串时,需要注意字符编码方式。常见的编码方式包括ASCII编码、Unicode编码(如UTF-8、UTF-16等)。UTF-8...

    java源码包3

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

    java源码包2

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

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

    在Java编程中,根据IP地址获取国家和地区名称是一项常见的需求,尤其在数据分析、网络监控或者用户定位等场景中。这个话题涉及到的主要知识点包括IP地址处理、数据库查询以及使用第三方库。 首先,IP地址是一个32位...

    判定树与判定表

    判定树

    Java面试要点(适用于2年以上经验,1年亦可)

    1. Java IO&Java NIO 2. bio、nio 和 aio 的区别、三种 IO 的用法与原理 3. netty 反射 1. 反射与 javassist 2. 反射与工厂模式、java.lang.reflect.* 序列化 1. 什么是序列化与反序列化、为什么序列化 2. 序列...

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

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

Global site tag (gtag.js) - Google Analytics