根据字符的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;
}
分享到:
相关推荐
【免费题库】华为OD机试 - 字符串序列判定(Java & JS & Python & C & C++).html
下面分别给出Java、Python和JavaScript三种语言的示例代码实现。 ##### Java示例代码 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = ...
三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的。关于三角形判定三角形判定 用javascript 写的。很不错的...
【JAVA计算器(含有优先级的判定)】 在编程领域,创建一个计算器程序是常见的学习实践,尤其是对于初学者而言。这个“JAVA计算器(含有优先级的判定)”项目旨在实现一个能够处理基本数学运算并考虑运算符优先级的...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
软件工程中的判定表、判定树和过程设计语言(PDL)的应用 判定表是一种形式化的决策表达方式,由四部分组成:左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种...
**判定树和判定表是两种常用的逻辑决策工具,它们在软件工程、数据分析和管理决策等领域广泛应用。** **一、判定树(Decision Tree)** 判定树是一种图形化表示决策过程的方法,它通过树枝状结构来展示各种可能的...
自己根据其他资源,加上自己的优化,实现136张麻将牌的算法
本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。Ext篇:能否提供复杂用户界面,是RIA的一个重要判定标准。在本书中,笔者把这一重任交给了Ext。希望读者...
2. & 和 && 的区别:& 是逻辑与,&& 是短路与,当出现一个 false 时,发生短路,判定结果为 false;& 还可以用作位运算符。 抽象类和普通类 1. 抽象类和普通类的区别:抽象类可以有抽象方法,也可以有普通方法,...
本篇除介绍Ajax原理和通用框架之外,还分别为从事Java和.NET开发的程序员安排了适合他们的DWR、Atlas框架。Ext篇:能否提供复杂用户界面,是RIA的一个重要判定标准。在本书中,笔者把这一重任交给了Ext。希望读者...
3. 游戏规则检查:每次落子后,检查当前棋局是否有连成五子的情况,如果有则判定该方胜利。 4. 轮流下棋:确保双方交替进行,通常通过跟踪当前下棋的玩家(通常用一个变量表示玩家颜色)来实现。 5. 清除棋盘:提供...
在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。Eclipse作为Java开发的主流IDE,提供了丰富的工具和支持来完成这项工作。本项目名为"java 解析Excel 并判断解析...
在JavaScript中,判定提交内容是否超过数据库长度需要注意如下知识点: 1. 字符编码:在JavaScript中处理字符串时,需要注意字符编码方式。常见的编码方式包括ASCII编码、Unicode编码(如UTF-8、UTF-16等)。UTF-8...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
在Java编程中,根据IP地址获取国家和地区名称是一项常见的需求,尤其在数据分析、网络监控或者用户定位等场景中。这个话题涉及到的主要知识点包括IP地址处理、数据库查询以及使用第三方库。 首先,IP地址是一个32位...
判定树
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网络安全...