博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]String.prototype使用
阅读量:4878 次
发布时间:2019-06-11

本文共 5564 字,大约阅读时间需要 18 分钟。

以下为web开发中常用到的js方法;收集并整理出来;简单的就不写出来了
 1
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>
 2
<
HTML
>
 3
<
HEAD
>
 4
<
TITLE
>
 New Document 
</
TITLE
>
 5
<
META 
NAME
="Generator"
 CONTENT
="EditPlus"
>
 6
<
META 
NAME
="Author"
 CONTENT
=""
>
 7
<
META 
NAME
="Keywords"
 CONTENT
=""
>
 8
<
META 
NAME
="Description"
 CONTENT
=""
>
 9
<
script 
language
=javascript
>
10    String.prototype.Replace = function(oldValue,newValue) 
11    
12        var reg = new RegExp(oldValue,"g"); 
13        return this.replace(reg, newValue); 
14    }
15    //字符串替换;曾经很头疼写了很多代码,还是这个简单
16    function replace(obj)
17    {
18        alert(obj.value.Replace("a","d"));
19    }
20
21    // 另存为文件
22    function SaveCode(obj, filename) 
23    {
24        var win = window.open('', '_blank', 'top=100'); 
25        var code = obj.innerText; 
26        code = code == null || code == "" ? obj.value : code; 
27        win.opener = null;
28        win.document.write(code);
29        win.document.execCommand('saveas', true, filename);
30        win.close();
31    }
32    // 问候
33    window.onload = function()
34    {    
35        var now = new Date();
36        var hour = now.getHours();
37        var greeting;
38        if (hour < 6)
39            greeting = "凌晨好";
40        else if (hour < 10)
41            greeting = "早上好";
42        else if (hour < 14)
43            greeting = "中午好";
44        else if (hour < 18)
45            greeting = "下午好";
46        else 
47            greeting = "晚上好";
48            
49        document.getElementById("hi").innerHTML = "<font color=red>" + greeting + "</font>" ;
50    }
51    // 将光标停在对象的最后
52    function PutCursorAtLast(obj) 
53    {  
54        obj.focus();
55        var range = obj.createTextRange(); 
56        range.moveStart('character',obj.value.length); 
57        range.collapse(true); 
58        range.select(); 
59    }
60    // 将光标停在对象的最前
61    function PutCursorAtFirst(obj) 
62    {  
63        obj.focus();
64        var range = obj.createTextRange(); 
65        range.moveStart('character',0); 
66        range.collapse(true); 
67        range.select(); 
68    }
69
</
script
>
70
</
HEAD
>
71
72
<
BODY
>
73
    
<
span 
id
="hi"
></
span
>
74
    
<
br
/>
75
    
<
span
>
 curssor at last 
</
span
>
76
    
<
br
/>
77
    
<
input 
type
=text 
value
="curssor at last"
 onclick
=PutCursorAtLast(this)
>
78
    
<
br
/>
79
    
<
span
>
 curssor at first 
</
span
>
80
    
<
br
/>
81
    
<
input 
type
=text 
value
="curssor at first"
 onclick
=PutCursorAtFirst(this)
>
82
    
<
br
/>
83
    
<
span
>
 String.Replace 
</
span
>
84
    
<
br
/>
85
    
<
INPUT 
TYPE
=TEXT 
value
="replace"
 ONCLICK
=replace(this)
>
86
    
<
br
/>
87
    
<
span
>
 save file 
</
span
>
88
    
<
br
/>
89
    
<
input 
type
=text 
value
="hello word"
 onclick
=SaveCode(this,"save")
>
90
</
BODY
>
91
</
HTML
>
92
//
 返回字符的长度,一个中文算2个
String.prototype.ChineseLength
=
function
()
    
return this.replace(/[^\x00-\xff]/g,"**").length;
}
//
 判断字符串是否以指定的字符串结束
String.prototype.EndsWith 
=
 
function
(str) 
{
    
return this.substr(this.length - str.length) == str;
}
//
 去掉字符左端的的空白字符
String.prototype.LeftTrim 
=
 
function
()
{
    
return this.replace(/(^[\\s]*)/g, "");
}
//
 去掉字符右端的空白字符
String.prototype.RightTrim 
=
 
function
()
{
    
return this.replace(/([\\s]*$)/g, "");
}
//
 判断字符串是否以指定的字符串开始
String.prototype.StartsWith 
=
 
function
(str) 
{
    
return this.substr(0, str.length) == str;
}
//
 去掉字符两端的空白字符
String.prototype.Trim 
=
 
function
()
{
    
return this.replace(/(^\s*)|(\s*$)/g, "");
}

都是基于 String.prototype 的扩展:

 起因是有个网友和我讨论两个函数,

一个是 isDateTime (判断字符是否是符合 yyyy-mm-dd hh:mm:ss日期格式)
另一个是 left 函数,类似vbscript的left 实现中英文字符的混合截取。
他两个函数都用了循环,还用了N多 if 语句,每个函数都超过了40行代码,问我有无好的办法精简一下。
于是,我就写出了下面的代码,不敢说最效率最高,但是已经是够精简了, left函数才1行
 1 <script type="text/javascript">
 2 
 3 //by Go_Rush(阿舜) from http://ashun.cnblogs.com/
 4 
 5 function $A(arrayLike){
 6     for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i])
 7     return ret
 8 };
 9 Array.prototype.any=function(f){
10     for(var i=0;i<this.length;i++if (f(this[i],i,this)) return true;
11     return false
12 };
13 
14 
15 
16 //判断 字符串 是否符合 yyyy-mm-dd hh:mm:ss的日期格式, 格式正确而且闰年闰月等也要正确
17 
18 String.prototype.isDateTime=function(){  
19     try{
20         var arr=(this.length==19)?this.split(/\D/):[]
21         --arr[1]
22         eval("var d=new Date("+arr.join(",")+")")    
23         return     Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth() 
24                      && Number(arr[2])==d.getDate() && Number(arr[3])==d.getHours()
25                     && Number(arr[4])==d.getMinutes() && Number(arr[5])==d.getSeconds()
26     }catch(x){
return false}
27 }
28 
29 /*
30 alert("2002-12-12 10:10:40".isDateTime())  //true
31 alert("2002-02-31 10:10:40".isDateTime())  //false
32 alert("2002-22-31 10:10:40".isDateTime())  //false
33 alert("2002-22-31 30:10:40".isDateTime())  //false
34 */
35 
36 
37 // 检查 是否以特定的字符串结束
38 String.prototype.startsWith=function(){
39     var _string=this
40     return $A(arguments).any(function(value){
return _string.slice(0,value.length)==value})
41 };
42 /*
43 alert("http://www.google.com/".startsWith("http://","ftp://","telnet://"))  //true  满足其中任何一个就返回 true
44 alert("http://www.google.com/".startsWith("https://","file://"))  //false
45 alert("abc".startsWith("a"))  //true
46 */
47 
48 
49 // 检查 是否以特定的字符串结束
50 String.prototype.endsWith=function(){
51     var _string=this
52     return $A(arguments).any(function(value){
return _string.slice(value.length*(-1))==value})
53 };
54 
55 
56 
57 //从左边截取n个字符 ,如果包含汉字,则汉字按两个字符计算
58 String.prototype.left=function(n){
59     return this.slice(0,n-this.slice(0,n).replace(/[\x00-\xff]/g,"").length)
60 };
61 /*
62 alert("abcdefg".left(3)==="abc")
63 alert("中国人cdefg".left(5)==="中国")
64 alert("中国abcdefg".left(5)==="中国a")
65 */
66 
67 
68 
69 
70 //从右边截取n个字符 ,如果包含汉字,则汉字按两个字符计算
71 String.prototype.right=function(n){
72     return this.slice(this.slice(-n).replace(/[\x00-\xff]/g,"").length-n)
73 };
74 
75 /*
76 alert("abcdefg".right(3)==="efg")
77 alert("cdefg中国人".right(5)==="国人")
78 alert("abcdefg中国".right(5)==="g中国")
79 */
80 
81 </script>

来源:

转载于:https://www.cnblogs.com/seasons1987/archive/2012/09/10/2678842.html

你可能感兴趣的文章
[老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向
查看>>
java--事件处理程序
查看>>
Kinect for Windows SDK开发学习相关资源
查看>>
词汇-气象
查看>>
ubuntu18 任务栏调到底部
查看>>
python学习笔记:第14天 内置函数补充和递归
查看>>
解决华为交换机S5700无法解除ip/Mac绑定的问题
查看>>
java8 函数接口
查看>>
在 Linux 下使用任务管理器
查看>>
11个炫酷的Linux终端命令大全
查看>>
关于一些JS的运算符
查看>>
移动端web页面使用position:fixed问题总结
查看>>
linux git 安装方法
查看>>
提高pythonn性能相关模块
查看>>
一道编程题: 在1~n之间选择若干个数,使其和为m
查看>>
Mybatis分页插件
查看>>
ASP.NET MVC IOC 之AutoFac攻略
查看>>
【BZOJ 4031】 4031: [HEOI2015]小Z的房间 (Matrix-Tree Theorem)
查看>>
final关键字的作用
查看>>
Bzoj4567---背单词
查看>>