欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

JavaScript常用字符串与数组扩展函数小结_基础知识

程序员文章站 2022-03-31 13:09:08
...
String对象的扩展函数:
String.prototype.trim = function() { 
  return this.replace(/^\s+|\s+$/g,""); 
} 
String.prototype.ltrim = function() { 
  return this.replace(/^\s+/g,""); 
} 
String.prototype.rtrim = function() { 
  return this.replace(/\s+$/g,""); 
} 
String.prototype.splitAndTrim = function($delimiter, $limit) 
{ 
  var $ss = this.split($delimiter, $limit); 
  for(var $i=0; $i/g,'>'); 
} 
String.prototype.stripTags = function () { 
  return this.replace(/]+)>/g,''); 
} 
String.prototype.toArray = function() { 
  return this.split(''); 
} 
String.prototype.toIntArray = function() { 
  var returnArray = []; 
  for (var i=0; i

变量替换

var a = "I Love {0}, and You Love {1},Where are {0}!";a.format("You","Me"); 
String.prototype.format = function(){ 
  var args = arguments; 
  return this.replace(/\{(\d+)\}/g,function(m,i,o,n){ 
    return args[i]; 
  }); 
} 

在字符串末尾追加字符串

String.prototype.append = function($str){ 
  return this.concat($str); 
} 

删除指定索引位置的字符,索引无效将不删除任何字符

String.prototype.deleteCharAt = function($sIndex){ 
  if($sIndex=this.length){ 
    return this.valueOf(); 
  }else if($sIndex==0){ 
    return this.substring(1,this.length); 
  }else if($sIndex==this.length-1){ 
    return this.substring(0,this.length-1); 
  }else{ 
    return this.substring(0,$sIndex)+this.substring($sIndex+1); 
  } 
} 

删除指定索引间的字符串.$sIndex和$eIndex所在的字符不被删除!依赖deleteCharAt

String.prototype.deleteString = function($sIndex, $eIndex){ 
  if($sIndex==$eIndex){ 
    return this.deleteCharAt($sIndex); 
  }else{ 
    if($sIndex>$eIndex){ 
      var tIndex=$eIndex; 
      $eIndex=$sIndex; 
      $sIndex=tIndex; 
    } 
    if($sIndexthis.length-1)$eIndex=this.length-1; 
    return this.substring(0,$sIndex+1)+this.substring($eIndex,this.length); 
  } 
} 

检查字符串是否以某个字符串(str)结尾

String.prototype.endsWith = function($str){ 
  return this.substr(this.length - $str.length) == $str; 
} 

检查该字符串是否以某个字符串开始

String.prototype.startsWith = function(str){ 
  return this.substr(0, str.length) == str; 
}  

比较两个字符串是否相等,不区分大小写!

String.prototype.equalsIgnoreCase = function($str){ 
  if(this.length!=$str.length){ 
    return false; 
  }else{ 
    var tmp1=this.toLowerCase(); 
    var tmp2=$str.toLowerCase(); 
    return tmp1==tmp2; 
  } 
} 

将指定的字符串插入到指定的位置后面!索引无效将直接追加到字符串的末尾

String.prototype.insert = function($ofset, $str){ 
  if($ofset=this.length-1){ 
    return this.concat($str); 
  } 
  return this.substring(0,$ofset)+$str+this.substring($ofset+1); 
} 

将指定的位置的字符设置为另外指定的字符或字符串.索引无效将直接返回不做任何处理!

String.prototype.setCharAt = function($ofset, $str){ 
  if($ofset=this.length-1){ 
    return this.valueOf(); 
  } 
  return this.substring(0,$ofset)+$str+this.substring($ofset+1); 
} 
String.prototype.replaceLen = function(start, len, replaced) {  
  if(!len)  
    return this;  
 
  if(start >= this.length)  
    return this;  
 
  var returnSeg = '';  
  var returnSeg2 = '';  
  var i = 0;  
  for (; i = start + len)  
      returnSeg2 += c;  
  }  
 
  return returnSeg + replaced + returnSeg2;  
} 

扩展基础类:
替换字符,这个在替换填入比较有用,比如***天***小时 替换为 小时

String.prototype.replaceChar = function(target, replaced, start) {  
  if(!target)  
    return this;  
  if(!start)  
    start = 0;  
 
  var returnVal = this.substring(0, start);  
  var index = 0;  
  for (var i = start; i 

将该字符串反序排列

String.prototype.reverse = function(){ 
  var str=""; 
  for(var i=this.length-1;i>=0;i--){ 
    str=str.concat(this.charAt(i)); 
  } 
  return str; 
} 

计算长度,每个汉字占两个长度,英文字符每个占一个长度

String.prototype.ucLength = function(){ 
  var len = 0; 
  for(var i=0;i255)len+=2; 
    else len++; 
  } 
  return len; 
} 

在字符串的左边填充一些特定的字符

String.prototype.lpad = function(len, s) { 
  var a = new Array(this); 
  var n = (len - this.length); 
  for ( var i = 0; i 

在字符串的右边填充一些特定的字符

String.prototype.rpad = function(len, s) { 
  var a = new Array(this); 
  var n = (len - this.length); 
  for ( var i = 0; i 

把字符串的首字母转化为大写

String.prototype.ucwords = function() { 
  return this.substring(0,1).toUpperCase().concat(this.substring(1)); 
} 
String.prototype.contains = function($str) { 
  return this.indexOf($str) > -1 ? true : false; 
} 

将格式为2008-04-02 10:08:44的字符串转成日期(String对象的值必须为: 2008-04-02 10:08:44)

String.prototype.toDate = function(){ 
  var str = this.replace(/-/g,"/"); 
  return (new Date(str)); 
} 

将原来用字符串表示的十进数转成十进制浮点数: precision为精度

String.prototype.toFloat = function(precision){ 
  precision = precision || 2; 
  return parseFloat(this,10).toFixed(precision); 
} 

将原来用字符串表示的十进数转成十进制整数

String.prototype.toInt = function(){ 
  return parseInt(this,10).toString(); 
} 

将两个原来用字符串表示的十进数相加后当作字串返回 : addend为加数

String.prototype.add = function(addend){ 
  var sum = parseFloat(this,10) + parseFloat(addend,10); 
  return sum+""; 
} 

十进制转其他进制代码如下nextScale为进制 如2,8,16

String.prototype.shiftScale = function(nextScale){ 
  return parseFloat(this).toString(nextScale); 
} 


各进制互相转换 :
this对象必须是整数
@param preScale 原是是几进制数
@param nextScale 要转换成几进制数

String.prototype.scaleShift = function(preScale,nextScale){ 
  return parseInt(this,preScale).toString(nextScale); 
} 

全角2半角 document.write("ABC 123,我们都是好朋友");
String.prototype.dbc2sbc = function (){
return this.replace(/[\uff01-\uff5e]/g,function(a){return String.fromCharCode(a.charCodeAt(0)-65248);}).replace(/\u3000/g," ");
}


Array扩展函数:

var isNumeric = function(x) { 
  // returns true if x is numeric and false if it is not. 
  var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;  
  return String(x).match(RegExp); 
} 
var myArray = [1,'two',3,'four',5,'six',7,'eight',9,'ten']; 
var oddArray=myArray.filter(isNumeric); // outputs: 1,3,5,7,9 
var oddArray=myArray.some(isNumeric); // outputs: true 
var oddArray=myArray.every(isNumeric); // outputs: false 
var printArray =function(x, idx){ 
  document.writeln('['+idx+'] = '+x); 
} 
myArray.forEach(printArray);// outputs: [0] = 1 [1] = two [2] = 3 [3] = four [4] = 5 
myArray.remove(9); 
document.writeln(myArray);  
 
if (!Array.prototype.every)  
{ 
 Array.prototype.every = function(fun /*, thisp*/) 
 { 
  var len = this.length; 
  if (typeof fun != "function") 
   throw new TypeError(); 
 
  var thisp = arguments[1]; 
  for (var i = 0; i  
Array.prototype.find = function(searchStr) { 
 var returnArray = false; 
 for (i=0; i

随机改变数组的排序

Array.prototype.shuffle = function (){   
  for(var rnd, tmp, i=this.length; i; rnd=parseInt(Math.random()*i), tmp=this[--i], this[i]=this[rnd], this[rnd]=tmp);  
  return this; 
}   
 
Array.prototype.compare = function(testArr) { 
  if (this.length != testArr.length) return false; 
  for (var i = 0; i 

去掉数组中重复的值var a = new Array("5","7","7"); a.unique();

Array.prototype.unique = function() { 
  var data = this || []; 
  var a = {}; //声明一个对象,javascript的对象可以当哈希表用 
  for (var i = 0; i = len) 
    from = len - 1; 
  } 
 
  for (; from > -1; from--) 
  { 
   if (from in this && 
     this[from] === elt) 
    return from; 
  } 
  return -1; 
 }; 
} 
Array.prototype.insertAt = function($value, $index) 
{ 
  if($index = this.length) 
    this.push($value); 
  else 
    this.splice($index, 0, $value); 
} 


根据数组的下标来删除元素

Array.prototype.removeByIndex=function($n) {   
  if($n

依赖indexOf

Array.prototype.remove = function($value) 
{ 
  var $index = this.indexOf($value); 
 
  if($index != -1) 
    this.splice($index, 1); 
} 
 
Array.prototype.removeAll = function() 
{ 
  while(this.length > 0) 
    this.pop(); 
} 
 
Array.prototype.replace = function($oldValue, $newValue) 
{ 
  for(var $i=0; $ilen?len:start?start:0; 
  delLen=delLenlen?len:delLen?delLen:len;   
   
  var arr =[],res=[]; 
  var iarr=0,ires=0,i=0; 
   
  for(i=0;i=delLen)  arr[iarr++]=this[i]; 
    else { 
      res[ires++]=this[i]; 
      if(item&&ires==delLen){ 
        arr[iarr++]=item; 
      } 
    }   
  } 
  if(item&&ires


分开添加,关键字shallow copy,如果遇到数组,复制数组中的元素

Array.prototype.concat = function(){ 
  var i=0; 
  while(ilen?len:end?end:len; 
       
  var i=start; 
  var res = []; 
  while(i