获取字符长度,中文2个字符,英文数字一个字符

转自testcs_dn(微wx笑) 博客

原文网址:http://blog.csdn.net/testcs_dn/article/details/21412303#comments

方法一:

function strlen(str){
var len = 0;
for (var i=0; i<str.length; i++) {
var c = str.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
len++;
}
else {
len+=2;
}
}
return len;
}

方法二:

 

getBLen = function(str) {
if (str == null) return 0;
if (typeof str != "string"){
str += "";
}
return str.replace(/[^\x00-\xff]/g,"01").length;
}

方法三:

var l = str.length;
var blen = 0;
for(i=0; i<l; i++) {
if ((str.charCodeAt(i) & 0xff00) != 0) {
blen ++;
}
blen ++;
}

方法四:

var jmz = {};

jmz.GetLength = function(str) {
///<summary>获得字符串实际长度,中文2,英文1</summary>
///<param name="str">要获得长度的字符串</param>
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128) realLength += 1;
else realLength += 2;
}
return realLength;
};

方法五:

String.prototype.gblen = function() {
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len ++;
}
}
return len;
}

时间: 2024-11-05 18:47:25

获取字符长度,中文2个字符,英文数字一个字符的相关文章

截字符串(汉字一个算两个字符,英文算一个字符)

------摘自动易(RSSFeed.asp) '************************************************** '函数名:GetSubStr '作  用:截字符串,汉字一个算两个字符,英文算一个字符 '参  数:str   ----原字符串 '        strlen ----截取长度 '返回值:截取后的字符串 '************************************************** Function GetSubStr(

C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符

在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put.如:    cout.put('a');调用该函数的结果是在屏幕上显示一个字符a.put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式).如    cout.put(65 + 32);也显示字符a,因为97是字符a的ASCII代码. 可以

中文汉字和常见英文数字等的unicode编码范围

  字符集 字数 Unicode编码(\u) 基本汉字 20902字  4E00-9FA5  基本汉字补充  38字  9FA6-9FCB 扩展A 6582字  3400-4DB5  扩展B  42711字  20000-2A6D6 扩展C  4149字 2A700-2B734  扩展D  222字  2B740-2B81D 康熙部首  214字  2F00-2FD5 部首扩展  115字 2E80-2EF3  兼容汉字  477字  F900-FAD9 兼容扩展  542字 2F800-2FA

MySQL的varchar定义长度是指字符长度,不是字节长度

今天在做页面的一个input的输入字符串长度校验的任务,数据库中对这个字段定义为 title  varchar(128) null, MySQL数据库. 一直以为128是字节长度,一个汉字2字节,英文等一个字节,所以最多只能放64个汉字. 可实际是我能放128个汉字,不能放129个汉字.说明:MySQL的varchar定义长度是指字符长度,不是字节长度. 字符: 人们使用的记号,抽象意义上的一个符号.一个汉字和英文就是一个字符,如'1', '中', 'a', '$', '¥',…… 字节: 计算

java小练习:输入一个字符,判断该字符是数字?英文字母?还是其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符,判断该字符是数字?英文字母?还是其他字符  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个字符:"); char ch = sc.next().charAt(0);

从键盘获取一个字符

问题:使用 switch 把小写类型的 char型转为大写.只转换 a, b, c, d, e. 其它的输出 "other". import java.util.Scanner; import java.io.IOException; /*从控制台接收一个字符,然后将其打印出来 //虽然此方式实现了从键盘获取输入的字符,但是System.in.read()只能针对一个字符的获取, 同时,获取进来的变量的类型只能是char,当我们输入一个数字, 希望得到的也是一个整型变量的时候,我们还得

利用正则表达式来设置最大输入字符长度

        在做机房合作的时候,很多东西都进行了"改革",听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决.不过利用正则表达式,我还是没没想到.反正正则表达式都学过了,为什么不能拿过来用呢?让它和我原来的方法比试比试. 一.ascii码小试 之前的代码是利用ascii码来编写的: '限制输入的字符长度为0-16之间 Private Sub txtcardno_LostFocus() If Not Len(txtc

18 PHP数字与字符运算 do while ,for 数组 函数 局部通信 时间日期

转义字符 赋值传值/引用传值 [PHP中的数字与字符运算] do while循环 for循环 红白黑球问题 [提高代码质量--红白黑球问题] 赋值传值和引用传址 数组 枚举数组 关联数组 数组的创建 使用array()函数创建数组 重载数组下标 多维数组 数组操作函数 print_r() unset() count() foreach() 数组元素的删除和增加函数 array_shift() array_values() list() 计算机运行时间计算 函数的概念 函数的语法结构 函数结构说明

截取文本,区分中英文字符,中文算两个长度,英文算一个长度

/// <summary>    /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度   /// </summary>   /// <param name="str">待截取的字符串</param>   /// <param name="length">需计算长度的字符串</param>   /// <returns>string</returns>   p