正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

判断是否存在中文和全角字符

str.match(/[^\x00-\xff]/ig)

判断包含中文字符串长度
aMatch=str.match(/[^\x00-\x80]/g);

str.length+(!aMatch?0:aMatch.length)

javascript 判断中文字符长度

一种:


代码如下:

function _length(str){
var len=0;
for(var i=0;i<str.length;i++){
if(str.charAt(i)>'~'){len+=2;}else{len++;}
}
return len;
}

二种:


代码如下:

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;
}
String.prototype.gbtrim = function(len, s) {
var str = '';
var sp = s || '';
var len2 = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
}
if (len2 <= len) {
return this;
}
len2 = 0;
len = (len > sp.length) ? len-sp.length: len;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
if (len2 > len) {
str += sp;
break;
}
str += this.charAt(i);
}
return str;
}
var str1 = '世上最牛的@#%&们 世上最牛的@#%&们';
document.write('str1 = '+ str1 +'
');
document.write('length = '+ str1.gblen() +'
');
document.write('gbtrim(10) = '+ str1.gbtrim(10) +'
');
document.write('gbtrim(10, \'…\') = '+ str1.gbtrim(10, '…') +'
');
document.write('gbtrim(12, \'-\' ) = '+ str1.gbtrim(12, '-') +'
');

// gbtrim(len 截取长度,按英文字节长度计算, s截取后的省略字符,如"…" )
// 备注: 这里中文字符都是当作两个长度来计算的,所以gbtrim中的len为10时,是显示最多5个汉字的。
// 当汉字数大于5时,由于截取后加上“…”,所以只显示4个汉字。

(0)

相关推荐

  • Javascript 字符串字节长度计算函数代码与效率分析(for VS 正则)

    先看看一下两段代码吧,它们分别用for循环和正则表达式来检测字符串的字节长度: for循环检测字符串的字节长度方法一: 复制代码 代码如下: var lenFor = function(str){ var byteLen=0,len=str.length; if(str){ for(var i=0; i<len; i++){ if(str.charCodeAt(i)>255){ byteLen += 2; } else{ byteLen++; } } return byteLen; } els

  • javascript 判断中文字符长度的函数代码

    JS的字符串都是string对象,可以用string对象的length属性可以获取其长度,但是无论是中文.全角符号以及英文最小长度单位都是1,这与php的strlen()并不相同. 复制代码 代码如下: function strlen(str) { var s = 0; for(var i = 0; i < str.length; i++) { if(str.charAt(i).match(/[u0391-uFFE5]/)) { s += 2; } else { s++; } } return

  • 计算字符串的长度的多种解决方案集锦

    复制代码 代码如下: @echo off & setlocal EnableDelayedExpansion :: 计算字符串的长度 :: :: :began set mystr= set /p mystr=输入要计算长度的字符串(直接回车退出): if not defined mystr goto :eof for /l %%i in (0,1,1000) do if "!mystr:~%%i,1!"=="" set strlen=%%i &&am

  • 检测含有中文字符串的实际长度

    我们在实际过程中要经常去检测含有中文字符串的实际长度, 因为中文字符,和英文字符在一起的话.判断起来你麻烦点. 原理跟在asp中的一样.逐个去判断.是中文加2英文加1. 复制代码 代码如下: ASCIIEncoding n = new ASCIIEncoding(); byte[] b = n.GetBytes(str); int l = 0; // l 为字符串之实际长度 for (int i=0;i <= b.Length-1;i++) { if (b[i] ==63) //判断是否为汉字或

  • JS版获取字符串真实长度和取固定长度的字符串函数

    自动将双字节字符长度计算为2,取字符时也按照单字节的长度取,如2即取1个汉字或两个字母,1取一个汉字或字母. // 得到字符串的真实长度(双字节换算为两个单字节) function getStrActualLen(sChars) { return sChars.replace(/[^\x00-\xff]/g,"xx").length; } // 截取固定长度子字符串 sSource为字符串iLen为长度 function getInterceptedStr(sSource, iLen)

  • php中计算中文字符串长度、截取中文字符串的函数代码

    在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. 复制代码 代码如下: header('Content-type:text/html;cha

  • 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    判断是否存在中文和全角字符 str.match(/[^\x00-\xff]/ig) 判断包含中文字符串长度 aMatch=str.match(/[^\x00-\x80]/g); str.length+(!aMatch?0:aMatch.length) javascript 判断中文字符长度 一种: 复制代码 代码如下: function _length(str){ var len=0; for(var i=0;i<str.length;i++){ if(str.charAt(i)>'~'){l

  • Flex正则表达式判断中文或全角字符代码

    Flex中一文本框,其值的length取出的是字符个数,并不是字节长度,如果含有中文或者全角字符,一个字符是2个字节. 计算其字符长度, ActionScript代码 复制代码 代码如下: for(var i:int=0;i<newStr.length;i++){ var char:String = newStr.substr(i,1); if(/[^\x00-\xff]/g.test(char)){ //中文加10 screenLength = screenLength + 10; }else

  • MySQL存储全角字符和半角字符的区别

    很不巧公司内测IM的时候又遇到MYSQL_DATA_TRUNCATED错误,日志记录还是在mysql_stmt_fetch调用的时候出现的.鉴于之前的经验,应该是给定的结果集绑定区域长度不够造成的,反复检查了好多遍没发现问题.我在代码中都是对应的关系,比如char(20),我代码中就会定义char buffer[20]数组来存储.看起来如此的正确完美.后面没办法只好打印每一行的数据,找到报错的那一行记录,发现字体和别的不一样.比如: 123456789(半角) 123456789(全角) 这并不

  • PHP实现全角字符转为半角方法汇总

    最简单的方法 <?php $str = "0123ABCDFWS\",.?<>{}[]*&^%#@!-()+-|::"; echo "$str"; echo "<br />"; $str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str); echo $str; 这是网上看来的代码,所有的中文标点的第二个字节减去0X80(即128

  • php全角字符转换为半角函数

    之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题.最后还是换成下面的字符替换方式了,把目前能找到的所有全角都列出来了一个个替换吧 复制代码 代码如下: /** * 全角字符转换为半角 * * @param string $str * @return string */ public function Sbc2Dbc($str) { $arr = array( '0'=>'0', '1'=>'1', '2'=>'2', '3'=>'3', '4'=>'4',

  • java判断中文字符串长度的简单实例

    话不多说,上代码: /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * @param value 指定的字符串 * @return 字符串的长度 */ public static int length(String value) { int valueLength = 0; String chinese = "[\u0391-\uFFE5]"; /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */ for (int i = 0; i <

  • python3实现全角和半角字符转换的方法示例

    前言 本文主要给大家介绍了关于python3中全角和半角字符转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.背景介绍 解决什么问题:快速方便的对文本进行全角半角自动转换 适用什么场景:学生答题数据中全角字符替换为半角字符 二.全角半角原理 全角即:Double Byte Character,简称DBC 半角即:Single Byte Character,简称SBC 在 windows 中,中文和全角字符都占两个字节,并且使用了 ascii chart 2 (

  • JS验证全角与半角及相互转化的介绍

    1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中,字母和数字等与汉字一样占据着等宽的位置. 半角:是指一个字符占用一个标准的字符位置.半角占一个字节. 半角就是 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母.数字和字符都是半角的. 每个半角字符只占用一字节的空间(一字节有8位,共256个编码空间).汉语.日

  • c#转换全角半角方法示例

    C#全角转换成半角 新建一个项目quanbanjiao,在此项目下新建一个类Class1 复制代码 代码如下: using System;using System.Web;using System.Text; namespace quanbanjiao{    public class Class1    {        /**/        /// <summary>        /// 判断字符是否英文半角字符或标点        /// </summary>      

随机推荐