第200天:js---常用string原型擴充套件

weixin_33806914發表於2018-03-21

一、常用string原型擴充套件

1、在字串末尾追加字串

1 /** 在字串末尾追加字串 **/
2 String.prototype.append = function (str) {
3     return this.concat(str);
4 }

2、刪除指定索引位置的字元,索引無效將不刪除任何字元

 1 /** 刪除指定索引位置的字元,索引無效將不刪除任何字元 **/
 2 String.prototype.deleteCharAt = function (index) {
 3     if (index < 0 || index >= this.length) {
 4         return this.valueOf();
 5     }
 6     else if (index == 0) {
 7         return this.substring(1, this.length);
 8     }
 9     else if (index == this.length - 1) {
10         return this.substring(0, this.length - 1);
11     }
12     else {
13         return this.substring(0, index) + this.substring(index + 1);
14     }
15 }

3、刪除指定索引區間的字串

 1 /** 刪除指定索引區間的字串 **/
 2 String.prototype.deleteString = function (start, end) {
 3     if (start == end) {
 4         return this.deleteCharAt(start);
 5     }
 6     else {
 7         if (start > end) {
 8             var temp = start;
 9             start = end;
10             end = temp;
11         }
12         if (start < 0) {
13             start = 0;
14         }
15         if (end > this.length - 1) {
16             end = this.length - 1;
17         }
18         return this.substring(0, start) + this.substring(end +1 , this.length);
19     }
20 }

4、檢查字串是否以subStr結尾

1 /** 檢查字串是否以subStr結尾 **/
2 String.prototype.endWith = function (subStr) {
3     if (subStr.length > this.length) {
4         return false;
5     }
6     else {
7         return (this.lastIndexOf(subStr) == (this.length - subStr.length)) ? true : false;
8     }
9 }

6、比較兩個字串是否相等

 1 /** 比較兩個字串是否相等,也可以直接用 == 進行比較 **/
 2 String.prototype.equal = function (str) {
 3     if (this.length != str.length) {
 4         return false;
 5     }
 6     else {
 7         for (var i = 0; i < this.length; i++) {
 8             if (this.charAt(i) != str.charAt(i)) {
 9                 return false;
10             }
11         }
12         return true;
13     }
14 }

7、比較兩個字串是否相等,不區分大小寫 

1 /** 比較兩個字串是否相等,不區分大小寫 **/
2 String.prototype.equalIgnoreCase = function (str) {
3     var temp1 = this.toLowerCase();
4     var temp2 = str.toLowerCase();
5     return temp1.equal(temp2);
6 }

8、將指定的字串插入到指定的位置後面

1 /** 將指定的字串插入到指定的位置後面,索引無效將直接追加到字串的末尾 **/
2 String.prototype.insert = function (ofset, subStr) {
3     if (ofset < 0 || ofset >= this.length - 1) {
4         return this.append(subStr);
5     }
6     return this.substring(0, ofset + 1) + subStr + this.substring(ofset + 1);
7 }

9、判斷字串是否數字串

1 /** 判斷字串是否數字串 **/
2 String.prototype.isAllNumber = function () {
3     for (var i = 0; i < this.length; i++) {
4         if (this.charAt(i) < '0' || this.charAt(i) > '9') {
5             return false;
6         }
7     }
8     return true;
9 }

10、將字串反序排列

1 /** 將字串反序排列 **/
2 String.prototype.reserve = function () {
3     var temp = "";
4     for (var i = this.length - 1; i >= 0; i--) {
5         temp = temp.concat(this.charAt(i));
6     }
7     return temp;
8 }

11、將指定的位置的字元設定為另外指定的字元或字串

1 /** 將指定的位置的字元設定為另外指定的字元或字串.索引無效將直接返回不做任何處理 **/
2 String.prototype.setCharAt = function (index, subStr) {
3     if (index < 0 || index > this.length - 1) {
4         return this.valueOf();
5     }
6     return this.substring(0, index) + subStr + this.substring(index+1);
7 }

12、檢查字串是否以subStr開頭

1 /** 檢查字串是否以subStr開頭 **/
2 String.prototype.startWith = function (subStr) {
3     if (subStr.length > this.length) {
4         return false;
5     }
6     return (this.indexOf(subStr) == 0) ? true : false;
7 }

13、計算長度

 1 /** 計算長度,每個漢字佔兩個長度,英文字元每個佔一個長度 **/
 2 String.prototype.charLength = function () {
 3     var temp = 0;
 4     for (var i = 0; i < this.length; i++) {
 5         if (this.charCodeAt(i) > 255) {
 6             temp += 2;
 7         }
 8         else {
 9             temp += 1;
10         }
11     }
12     return temp;
13 }
14 String.prototype.charLengthReg = function () {
15     return this.replace(/[^\x00-\xff]/g, "**").length;
16 }

14、去掉首尾空格

1 /** 去掉首尾空格 **/
2 String.prototype.trim = function () {
3     return this.replace(/(^\s*)|(\s*$)/g, "");
4 }

15、測試是否是數字

1 /** 測試是否是數字 **/
2 String.prototype.isNumeric = function () {
3     var tmpFloat = parseFloat(this);
4     if (isNaN(tmpFloat))
5         return false;
6     var tmpLen = this.length - tmpFloat.toString().length;
7     return tmpFloat + "0".Repeat(tmpLen) == this;
8 }

16、測試是否是整數

1 /** 測試是否是整數 **/ 
2 String.prototype.isInt = function () {
3     if (this == "NaN")
4         return false;
5     return this == parseInt(this).toString();
6 }

17、獲取N個相同的字串

1 /** 獲取N個相同的字串 **/
2 String.prototype.Repeat = function (num) {
3     var tmpArr = [];
4     for (var i = 0; i < num; i++) tmpArr.push(this);
5     return tmpArr.join("");
6 }

18、合併多個空白為一個空白

1 /** 合併多個空白為一個空白 **/ 
2 String.prototype.resetBlank = function () {
3     return this.replace(/s+/g, " ");
4 }

19、除去左邊空白

1 /** 除去左邊空白 **/ 
2 String.prototype.LTrim = function () {
3     return this.replace(/^s+/g, "");
4 }

20、除去右邊空白

1 /** 除去右邊空白 **/ 
2 String.prototype.RTrim = function () {
3     return this.replace(/s+$/g, "");
4 }

21、除去兩邊空白

1 /** 除去兩邊空白 **/ 
2 String.prototype.trim = function () {
3     return this.replace(/(^s+)|(s+$)/g, "");
4 }

22、保留數字

1 /** 保留數字 **/ 
2 String.prototype.getNum = function () {
3     return this.replace(/[^d]/g, "");
4 }

23、保留字母

1 /** 保留字母 **/ 
2 String.prototype.getEn = function () {
3     return this.replace(/[^A-Za-z]/g, "");
4 }

24、保留中文

1 /** 保留中文 **/ 
2 String.prototype.getCn = function () {
3     return this.replace(/[^u4e00-u9fa5uf900-ufa2d]/g, "");
4 }

25、得到位元組長度

1 /** 得到位元組長度 **/ 
2 String.prototype.getRealLength = function () {
3     return this.replace(/[^x00-xff]/g, "--").length;
4 }

26、從左擷取指定長度的字串

1 /** 從左擷取指定長度的字串 **/ 
2 String.prototype.left = function (n) {
3     return this.slice(0, n);
4 }

27、從右擷取指定長度的字串

1 /** 從右擷取指定長度的字串 **/ 
2 String.prototype.right = function (n) {
3     return this.slice(this.length - n);
4 }

28、刪除首尾空格

1 /*** 刪除首尾空格 ***/ 
2 String.prototype.Trim = function() { 
3   return this.replace(/(^\s*)|(\s*$)/g, ""); 
4 } 

29、統計指定字元出現的次數

1 /*** 統計指定字元出現的次數 ***/ 
2 String.prototype.Occurs = function(ch) { 
3 //  var re = eval("/[^"+ch+"]/g"); 
4 //  return this.replace(re, "").length; 
5   return this.split(ch).length-1; 
6 } 

30、檢查是否由數字組成

1 /*** 檢查是否由數字組成 ***/ 
2 String.prototype.isDigit = function() { 
3   var s = this.Trim(); 
4   return (s.replace(/\d/g, "").length == 0); 
5 } 

31、檢查是否由數字字母和下劃線組成

1 /*** 檢查是否由數字字母和下劃線組成 ***/ 
2 String.prototype.isAlpha = function() { 
3   return (this.replace(/\w/g, "").length == 0); 
4 } 

32、檢查是否為數

1 /*** 檢查是否為數 ***/ 
2 String.prototype.isNumber = function() { 
3   var s = this.Trim(); 
4   return (s.search(/^[+-]?[0-9.]*$/) >= 0); 
5 } 

33、返回位元組數

1 /*** 返回位元組數 ***/ 
2 String.prototype.lenb = function() { 
3   return this.replace(/[^\x00-\xff]/g,"**").length; 
4 } 

34、檢查是否包含漢字

1 /*** 檢查是否包含漢字 ***/ 
2 String.prototype.isInChinese = function() { 
3   return (this.length != this.replace(/[^\x00-\xff]/g,"**").length); 
4 } 

35、簡單的email檢查

 1 /*** 簡單的email檢查 ***/ 
 2 String.prototype.isEmail = function() { 
 3  var strr; 
 4   var mail = this; 
 5  var re = /(\w+@\w+\.\w+)(\.{0,1}\w*)(\.{0,1}\w*)/i; 
 6  re.exec(mail); 
 7  if(RegExp.$3!="" && RegExp.$3!="." && RegExp.$2!=".") 
 8     strr = RegExp.$1+RegExp.$2+RegExp.$3; 
 9  else 
10   if(RegExp.$2!="" && RegExp.$2!=".") 
11       strr = RegExp.$1+RegExp.$2; 
12   else 
13      strr = RegExp.$1; 
14  return (strr==mail); 
15 } 

36、簡單的日期檢查,成功返回日期物件

 1 /*** 簡單的日期檢查,成功返回日期物件 ***/ 
 2 String.prototype.isDate = function() { 
 3   var p; 
 4   var re1 = /(\d{4})[年./-](\d{1,2})[月./-](\d{1,2})[日]?$/; 
 5   var re2 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{2})[年]?$/; 
 6   var re3 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{4})[年]?$/; 
 7   if(re1.test(this)) { 
 8     p = re1.exec(this); 
 9     return new Date(p[1],p[2],p[3]); 
10   } 
11   if(re2.test(this)) { 
12     p = re2.exec(this); 
13     return new Date(p[3],p[1],p[2]); 
14   } 
15   if(re3.test(this)) { 
16     p = re3.exec(this); 
17     return new Date(p[3],p[1],p[2]); 
18   } 
19   return false; 
20 } 

37、檢查是否有列表中的字元字元

1 /*** 檢查是否有列表中的字元字元 ***/ 
2 String.prototype.isInList = function(list) { 
3   var re = eval("/["+list+"]/"); 
4   return re.test(this); 
5 }

二、系統中js的擴充套件函式

1、清除兩邊的空格 

1 // 清除兩邊的空格  
2     String.prototype.trim = function() {  
3         return this.replace(/(^\s*)|(\s*$)/g, '');  
4     };  

2、合併多個空白為一個空白  

1 // 合併多個空白為一個空白  
2     String.prototype.ResetBlank = function() {  
3         var regEx = /\s+/g;  
4         return this.replace(regEx, ' ');  
5     }; 

3、保留數字

1 String.prototype.GetNum = function() {  
2         var regEx = /[^\d]/g;  
3         return this.replace(regEx, '');  
4     };  

4、保留中文

1 // 保留中文  
2     String.prototype.GetCN = function() {  
3         var regEx = /[^\u4e00-\u9fa5\uf900-\ufa2d]/g;  
4         return this.replace(regEx, '');  
5     }; 

5、String轉化為Number  

1 // String轉化為Number  
2     String.prototype.ToInt = function() {  
3         return isNaN(parseInt(this)) ? this.toString() : parseInt(this);  
4     }; 

6、得到位元組長度  

 1 // 得到位元組長度  
 2     String.prototype.GetLen = function() {  
 3         var regEx = /^[\u4e00-\u9fa5\uf900-\ufa2d]+$/;  
 4         if (regEx.test(this)) {  
 5             return this.length * 2;  
 6         } else {  
 7             var oMatches = this.match(/[\x00-\xff]/g);  
 8             var oLength = this.length * 2 - oMatches.length;  
 9             return oLength;  
10         }  
11     };  

7、獲取檔案全名  

1 // 獲取檔案全名  
2     String.prototype.GetFileName = function() {  
3         var regEx = /^.*\/([^\/\?]*).*$/;  
4         return this.replace(regEx, '$1');  
5     };  

8、獲取副檔名

1 // 獲取副檔名  
2     String.prototype.GetExtensionName = function() {  
3         var regEx = /^.*\/[^\/]*(\.[^\.\?]*).*$/;  
4         return this.replace(regEx, '$1');  
5     };  

9、格式化字串

 1 String.Format = function() {  
 2         if (arguments.length == 0) {  
 3             return '';  
 4         }  
 5       
 6         if (arguments.length == 1) {  
 7             return arguments[0];  
 8         }  
 9       
10         var reg = /{(\d+)?}/g;  
11         var args = arguments;  
12         var result = arguments[0].replace(reg, function($0, $1) {  
13             return args[parseInt($1) + 1];  
14         });  
15         return result;  
16     };  

10、數字補零  

1 // 數字補零  
2     Number.prototype.LenWithZero = function(oCount) {  
3         var strText = this.toString();  
4         while (strText.length < oCount) {  
5             strText = '0' + strText;  
6         }  
7         return strText;  
8     };  

11、Unicode還原  

1 // Unicode還原  
2     Number.prototype.ChrW = function() {  
3         return String.fromCharCode(this);  
4     };  

12、數字陣列由小到大排序 

 1 // 數字陣列由小到大排序  
 2     Array.prototype.Min2Max = function() {  
 3         var oValue;  
 4         for (var i = 0; i < this.length; i++) {  
 5             for (var j = 0; j <= i; j++) {  
 6                 if (this[i] < this[j]) {  
 7                     oValue = this[i];  
 8                     this[i] = this[j];  
 9                     this[j] = oValue;  
10                 }  
11             }  
12         }  
13         return this;  
14     };  

13、數字陣列由大到小排序  

 1 // 數字陣列由大到小排序  
 2     Array.prototype.Max2Min = function() {  
 3         var oValue;  
 4         for (var i = 0; i < this.length; i++) {  
 5             for (var j = 0; j <= i; j++) {  
 6                 if (this[i] > this[j]) {  
 7                     oValue = this[i];  
 8                     this[i] = this[j];  
 9                     this[j] = oValue;  
10                 }  
11             }  
12         }  
13         return this;  
14     };  

14、獲得數字陣列中最大項  

 1 // 獲得數字陣列中最大項  
 2     Array.prototype.GetMax = function() {  
 3         var oValue = 0;  
 4         for (var i = 0; i < this.length; i++) {  
 5             if (this[i] > oValue) {  
 6                 oValue = this[i];  
 7             }  
 8         }  
 9         return oValue;  
10     };  

15、獲得數字陣列中最小項  

 1 // 獲得數字陣列中最小項  
 2     Array.prototype.GetMin = function() {  
 3         var oValue = 0;  
 4         for (var i = 0; i < this.length; i++) {  
 5             if (this[i] < oValue) {  
 6                 oValue = this[i];  
 7             }  
 8         }  
 9         return oValue;  
10     };  

16、獲取當前時間的中文形式  

 1 // 獲取當前時間的中文形式  
 2     Date.prototype.GetCNDate = function() {  
 3         var oDateText = '';  
 4         oDateText += this.getFullYear().LenWithZero(4) + new Number(24180).ChrW();  
 5         oDateText += this.getMonth().LenWithZero(2) + new Number(26376).ChrW();  
 6         oDateText += this.getDate().LenWithZero(2) + new Number(26085).ChrW();  
 7         oDateText += this.getHours().LenWithZero(2) + new Number(26102).ChrW();  
 8         oDateText += this.getMinutes().LenWithZero(2) + new Number(20998).ChrW();  
 9         oDateText += this.getSeconds().LenWithZero(2) + new Number(31186).ChrW();  
10         oDateText += new Number(32).ChrW() + new Number(32).ChrW() + new Number(26143).ChrW() + new Number(26399).ChrW() + new String('26085199682010819977222352011620845').substr(this.getDay() * 5, 5).ToInt().ChrW();  
11         return oDateText;  
12     };  

17、擴充套件Date格式化

 1 //擴充套件Date格式化  
 2     Date.prototype.Format = function(format) {  
 3         var o = {  
 4             "M+": this.getMonth() + 1, //月份           
 5             "d+": this.getDate(), //
 6             "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小時           
 7             "H+": this.getHours(), //小時           
 8             "m+": this.getMinutes(), //
 9             "s+": this.getSeconds(), //
10             "q+": Math.floor((this.getMonth() + 3) / 3), //季度           
11             "S": this.getMilliseconds() //毫秒           
12         };  
13         var week = {  
14             "0": "\u65e5",  
15             "1": "\u4e00",  
16             "2": "\u4e8c",  
17             "3": "\u4e09",  
18             "4": "\u56db",  
19             "5": "\u4e94",  
20             "6": "\u516d"  
21         };  
22         if (/(y+)/.test(format)) {  
23             format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  
24         }  
25         if (/(E+)/.test(format)) {  
26             format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);  
27         }  
28         for (var k in o) {  
29             if (new RegExp("(" + k + ")").test(format)) {  
30                 format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  
31             }  
32         }  
33         return format;  
34     }  
35     Date.prototype.Diff = function(interval, objDate) {  
36         //若引數不足或 objDate 不是日期型別則回傳 undefined  
37         if (arguments.length < 2 || objDate.constructor != Date) { return undefined; }  
38         switch (interval) {  
39             //計算秒差                                                          
40             case 's': return parseInt((objDate - this) / 1000);  
41                 //計算分差  
42             case 'n': return parseInt((objDate - this) / 60000);  
43                 //計算時差  
44             case 'h': return parseInt((objDate - this) / 3600000);  
45                 //計算日差  
46             case 'd': return parseInt((objDate - this) / 86400000);  
47                 //計算周差  
48             case 'w': return parseInt((objDate - this) / (86400000 * 7));  
49                 //計算月差  
50             case 'm': return (objDate.getMonth() + 1) + ((objDate.getFullYear() - this.getFullYear()) * 12) - (this.getMonth() + 1);  
51                 //計算年差  
52             case 'y': return objDate.getFullYear() - this.getFullYear();  
53                 //輸入有誤  
54             default: return undefined;  
55         }  
56     };  

18、檢測是否為空  

 1 //檢測是否為空  
 2     Object.prototype.IsNullOrEmpty = function() {  
 3         var obj = this;  
 4         var flag = false;  
 5         if (obj == null || obj == undefined || typeof (obj) == 'undefined' || obj == '') {  
 6             flag = true;  
 7         } else if (typeof (obj) == 'string') {  
 8             obj = obj.trim();  
 9             if (obj == '') {//為空  
10                 flag = true;  
11             } else {//不為空  
12                 obj = obj.toUpperCase();  
13                 if (obj == 'NULL' || obj == 'UNDEFINED' || obj == '{}') {  
14                     flag = true;  
15                 }  
16             }  
17         }  
18         else {  
19             flag = false;  
20         }  
21         return flag;  
22     };

 

相關文章