先上代码:
function strCode(str) {
var count = 0;
if (str) {
len = str.length;
for (var i = 0; i < len; i++) {
if (str.charCodeAt(i) > 255) {
count += 2;
} else {
count++;
console.log(count);
return count;
} else {
console.log(0);
return 0;
var a = '1234567';
var c = '我是第一';
strCode(a);
strCode();
strCode(c);
strCode('asd啊啊啊');
效果如下:
charCodeAt()
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。 字符串中第一个字符的位置为 0, 第二个字符位置为 1,以此类推。
语法:
string.charCodeAt(index)
参数 | 描述 |
---|
index | 必需。表示字符串中某个位置的数字,即字符在字符串中的下标 |
类型 | 描述 |
---|
Number | 返回在指定的位置的字符的 Unicode 编码 |
var a = '1x.我'
console.log(a.charCodeAt(0));
console.log(a.charCodeAt(1));
console.log(a.charCodeAt(2));
console.log(a.charCodeAt(3));
效果:
注:当unicode>255,可以判断该字符字节长度为2(中文)
参考:http://c.biancheng.net/view/5547.html
原文链接:http://c.biancheng.net/view/5547.html
function getByteLen(val) { //传入一个字符串
var len = 0;
for (var i = 0; i val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null) //全角
对于使用javascript编程的人来说,判断字符串长度应该是常用又简单的操作,但在判断包含有中文字符或其他非asci字符的字符串长度时,却有些坑在里面。
js中判断字符串的长度一般都是使用 length 属性 ,但是 length 属性获取到的字符串长度是以字节为单位,如果我们想要利用 js 根据字节来获取或判断一串字符串的长度该如何做呢?
js 按字符判断一串字符串的长度
length:属性可以读取字符串的长度。长度以字符为单位,该属性为只读属性。
示例代码:
<script>
var str = 'hello word!';...
for (var i = 0; i &lt; str.length; i++) {
var a = str.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2;
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len .
原理:前128个字符就是ASCII码,占用一个字节,128个之后是扩展码(Unicode码),占用2个字节。汉字:[0x4e00,0x9fa5](或十进制[19968,40869])是全角字符的范围(注意这里有个非),通过正则来获取字符串中的全角字符。小写字母:[0x61,0x7a](或十进制[97, 122])大写字母:[0x41,0x5a](或十进制[65, 90])数字:[0x30,0x39](或十进制[48, 57])
默认的JS判断字符长度的方法是按字数计算的,这样1个汉字与1个英文都是1的长度,不够准确,可以用下面的代码来实现1个汉字等于两个英文长度的计算.String.prototype.getlength = function() { return this.replace(/[^/x00-/xff]/ig, "aa").length; } //例子alert("我是Miller".getleng
汉字在数据库中占2个字符,如果输入字符超过数据库表字段长度,会出现错误,因此需要在前台进行判断。有两种方法进行判断:
方法一:使用正则表达式,代码如下:function getByteLen(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
遍历字符串的每个字符,利用chartCodeAt()获取相应字符编码code,
若code>=0 && code<=128,则长度+1,
否则长度+2.
String.prototype.GetLength = function() {
var realLength = 0, len = this.length, charCode = -1;
for (var i = 0; i <
JS的字符串都是string对象,可以用string对象的length属性可以获取其长度,但是无论是中文、全角符号以及英文最小长度单位都是1,这与php的strlen()并不相同。
代码如下:
function strlen(str) {
var s = 0;
for(var i = 0; i
if(str.charAt(i).match(/[u0391-uFFE5]/)) {