第200天:js---常用string原型擴充套件
一、常用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 };
相關文章
- JavaScript擴充套件原型鏈淺析JavaScript套件原型
- JavaScript String 物件擴充套件方法JavaScript物件套件
- GNOME Shell Extension常用擴充套件套件
- ES6 -- String 擴充套件方法解析套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 常用的String原型原型
- Kotlin-常用擴充套件函式Kotlin套件函式
- String擴充套件trim方法,刪除前後空格套件
- Monitor的擴充套件支援string的超時鎖套件
- 第3章 LALR等技術擴充套件套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 記錄Laravel開發常用擴充套件包Laravel套件
- js筆記三十四之原型鏈模式擴充套件(1)JS筆記原型模式套件
- js筆記三十五之原型鏈模式擴充套件(2)JS筆記原型模式套件
- RxRetrofit - 終極封裝 - 深入淺出 & 擴充套件 String封裝套件
- 以太坊第 2 層擴充套件是什麼?套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- chrome擴充套件推薦:無法無天的圖片內文書處理擴充套件 --- Project NapthaChrome套件ProjectAPT
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- SQL Server 2008的效能和擴充套件SQLServer套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- 第190天:js—String常用屬性和方法(最全)JS
- 分類擴充套件套件
- 擴充套件表示式套件