js中object、字符串与正则表达式的方法
对象
1.object.hasOwnProperty(name)
检测object是否包含一个名为name的属性,那么hasOwnProperty方法返回true,但是不包括其原型上的属性。
正则表达式
2.regexp.exec(string)
exec方法是正则表达式最强大和最慢的方法。如果成功的匹配regexp和字符串,他会返回一个数组。数组中下标为0的元素将会包含正则表达式regexp匹配的子字符串。下标为1的元素是分组1捕获的文本,下标为2的元素是分组2捕获的文本。如果匹配失败,会返回null。
如果regexp带有一个g标志。查找不是从这个字符串的其实位置开始,而是从regexp.lastIndex(初始值为0)位置开始。如果匹配成功,那么regexp.lastIndex将被设置为该匹配后第一个字符的位置。不成功的匹配会重置regexp.lastIndex为0。
3.regexp.test(string)
是使用正则表达式的最简单和最快的方法。如果该regexp匹配string,返回true,否则返回false。不要对这样方法使用g标识。
字符串
4.string.chatAt(pos)
返回:在string中pos处的字符串。如果pos小于0或者大于等于字符串长度string.length,他会返回空字符串。
例如:
1 var foo=function(){ 2 var str="",str1="abc",c=undefined,d=null; 3 console.log(str.charAt(0));//没有输出结果 4 console.log(str1.charAt(1));//b 5 console.log(c.charAt(1));//报错 6 console.log(d.charAt(1));//报错 7 8 }; 9 foo();
charAt()可以这样实现
String.method("charAt",function(pos){
return this.slice(pos,pos+1);
});
5.string.charCodeAt(pos)
返回:以整数形式标识的string中pos位置的字符的字符编码。如果pos小于0或者大于等于字符串长度string.length,他会返回NaN。
6.string.cancat(string……)
返回:返回连接在一起的新的字符串,但是用+更加方便。
例如:
var s="c".cancat("a","n");
7.string.indexOf(searchString,position)
返回:在string内部查找searchString。
如果找到,返回第一个匹配字符的位置,否则返回-1.可选参数position可指从某个指定的位置开始查找:
1 var foo=function(){ 2 var str="",str1="abcabc",c=undefined,d=null; 3 console.log(str.indexOf("a",0));//-1 4 console.log(str1.indexOf("a",0));//0 5 console.log(str1.indexOf("a",1));//3 6 console.log(c.indexOf("a",0));//报错 7 console.log(d.indexOf("a",0));//报错 8 9 }; 10 foo();
8.string.lastIndexOf(searchString,position)
返回:searchString的从string末尾开始查找的位置。
例如:
1 var text = 'Mississippi'; 2 var p = text.lastIndexOf('ss'); // p is 5 3 p = text.lastIndexOf('ss', 3); // p is 2 4 p = text.lastIndexOf('ss', 6); // p is 5
9.string.localeCompare(that)
返回:比较两个字符串。如何比较没有特别的说明,如果string比字符串that小,那么结果为负数。如果他们是相等的,结果为0.
10.string.match(regexp)
返回:让字符串与正则表达式匹配。依据g标识决定如何进行匹配。如果没有g标识,那么调用string.match(regexp)的结果与调用regexp.exec(string)结果相同。然而,如果regexp带有g标识符,他将生成一个包含所有匹配(除捕获分组之外)的数组:
11.string.replace(searchValue,replaceValue)
返回:对string进行查找和替换操作,并返回一个新的字符串。参数searchValue可以是一个字符串或一个正则表达式对象。如果是一个字符串,那么searchValue只会在第一次出现的地方被替换。例如:
var result = "mother_in_law".replace('_', '-'); ,如果searchValue是一个正则表达式并且带有g标志,他会替换所有的匹配,如果没有带g标识,它会仅替换第1个匹配。例如:
1 var oldareacode = /\((\d{3})\)/g; 2 var p = '(555)666-1212'.replace(oldareacode, '$1-'); 3 // p is '555-555-1212'
replaceValue可以是一个字符串或一个函数。如果replaceValue是一个函数,那么每遇到一次匹配函数就会被调用一次,而该函数返回的字符串会被用作替换文本。传递给这个函数的第一个参数是整个被匹配的文本,第2个参数是分组1捕获的文本,再下一个参数是分组2捕获的文本,依次类推。
12.string.slice(start,end)
返回:复制string中的一部分来构造一个新的字符串。
如果start参数是负数,它将与string.length相加。
end参数是可选的,且默认值是string.length。如果end参数是负数,那么它将与string.length相加。end参数等于你要取得最后一个字符位置加1。
想要从位置p开始的n个字符,就用string.slice(p,p+n);
例如:
1 var text = 'and in it he says "Any damn fool could'; 2 var a = text.slice(18); 3 // a is '"Any damn fool could' 4 var b = text.slice(0, 3); 5 // b is 'and' 6 var c = text.slice(−5); 7 // c is 'could' 8 var d = text.slice(19, 32); 9 // d is 'Any damn fool'
13.string.split(separator,limit)
返回:将string分割成片段来创建的一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。
如果separator是一个空白字符,会返回一个单字符数组,例如:
1 var digits = '0123456789'; 2 var a = digits.split('', 5); 3 // a is ['0', '1', '2', '3', '456789']
否则,会查找所有separator出现的地方。分隔符两边的每个单元文本都会被复制到该数组中。此方法会忽略g标识符。
来自捕获组的文本会白包含在分割后的数组中:
1 var text = 'last, first ,middle'; 2 var e = text.split(/\s*(,)\s*/); 3 // e is [ 4 // 'last', 5 // ',', 6 // 'first', 7 // ',', 8 // 'middle' 9 // ]
14.string.search(regexp)
与indexOf相似,接收一个正则表达式对象作为参数而不是一个字符串。如果找到匹配,它返回第1个匹配的首字符的位置,如果没有找到匹配,则返回-1。此方法会忽略g标志,且没有position参数:
1 var text = 'and in it he says "Any damn fool could'; 2 var pos = text.search(/["']/); // pos is 18
15.string.substring(start,end)
与slice一样,但是不能处理负参数。
16.string.toLocaleLowerCase()
返回一个新的字符串,使用本地化规则把这个string中的所有的字母转换为小写格式。
17.string.LocaleUpperCase()
返回一个新字符串,使用本地化规则把这个string中的所有的字母转换为大写格式。
18.string.toLowerCase()
返回一个新的字符串,string中的所有字母都被转化为小写格式
19.string.toUpperCase()
返回一个新的字符串,string中的所有字母都被转化为大写格式
20.string.fromCharCode(char……)
根据一串数字编码返回一个字符串
var a = String.fromCharCode(67, 97, 116);
// a is 'Cat'