中文字符串截取的js函数代码

  为了解决这个问题昨天写了根据字节数截取字符串的函数。

  具体使用很简单,跟String.subString(start, end)一样使用就可。比如:var str = "诶必塞第衣爱抚即"; var str1 = str.subCHStr(2, 2); var str2 = str.subCHString(2, 4); alert(str1 + " == " + str2);

  

复制代码 代码如下:

  Code

  //计算字符串长度

  String.prototype.strLen = function() {

  var len = 0;

  for (var i = 0; i < this.length; i++) {

  if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) len += 2; else len ++;

  }

  return len;

  }

  //将字符串拆成字符,并存到数组中

  String.prototype.strToChars = function(){

  var chars = new Array();

  for (var i = 0; i < this.length; i++){

  chars[i] = [this.substr(i, 1), this.isCHS(i)];

  }

  String.prototype.charsArray = chars;

  return chars;

  }

  //判断某个字符是否是汉字

  String.prototype.isCHS = function(i){

  if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0)

  return true;

  else

  return false;

  }

  //截取字符串(从start字节到end字节)

  String.prototype.subCHString = function(start, end){

  var len = 0;

  var str = "";

  this.strToChars();

  for (var i = 0; i < this.length; i++) {

  if(this.charsArray[i][1])

  len += 2;

  else

  len++;

  if (end < len)

  return str;

  else if (start < len)

  str += this.charsArray[i][0];

  }

  return str;

  }

  //截取字符串(从start字节截取length个字节)

  String.prototype.subCHStr = function(start, length){

  return this.subCHString(start, start + length);

  }