第200天:js---常用string原型扩展

简介: 一、常用string原型扩展1、在字符串末尾追加字符串1 /** 在字符串末尾追加字符串 **/2 String.prototype.append = function (str) {3 return this.

一、常用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     };

 

相关文章
|
3月前
|
JavaScript 前端开发
如何在JavaScript中实现基于原型的继承机制
【8月更文挑战第14天】如何在JavaScript中实现基于原型的继承机制
29 0
|
12天前
|
JavaScript 前端开发 开发者
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
43 3
|
2月前
|
JavaScript 前端开发 Python
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
|
2月前
|
JSON JavaScript 前端开发
js原型继承|26
js原型继承|26
|
2月前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
38 2
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
2月前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
31 0
|
2月前
|
JavaScript 前端开发
今天被JavaScript的String型和数字型的+运算撞了一下腰。
今天被JavaScript的String型和数字型的+运算撞了一下腰。
|
2月前
|
JavaScript 前端开发
JavaScript基础知识-原型(prototype)
关于JavaScript基础知识中原型(prototype)概念的介绍。
37 1

热门文章

最新文章