字符串基础方法
1.chatAt()
str.chatAt(n)
返回字符串的第n个字符,如果不在 0~str.length-1
之间,则返回一个空字符串。
const str = '12345';
str.chatAt(1); // 2
2.indexOf()
str.indexOf(substr[, start]);
返回 substr
在字符串 str
中首次出现的位置,从 start
位置开始查找,如果不存在,则返回-1。start
可以是任意整数,默认为0。如果 start
< 0则查找整个字符串(如同传进了0)。如果 start > 字符串的长度
,则该方法返回-1,但如果查找的字符串是一个空字符串,此时返回 str.length
。
var str = "haha";
str.indexOf('a'); // 1
str.indexOf('a', 6); // -1
str.indexOf('a', -1); // 1
str.indexOf('s', 1); // -1
str.indexOf(''); // 0
str.indexOf('', 6); // 4 字符串长度
3.lastIndexOf()
str.lastIndexOf(substr[,start]);
返回 substr
在字符串中最后出现的位置,如果没有找到则返回-1。从该字符串的后面向前查找,从start处开始。start
可以是任意整数(默认是 str.length
)。如果为负值,则被看作是0,如果 start > str.length
则被看作是 str.length
。
"canal".lastIndexOf("a") // 3
"canal".lastIndexOf("a",2) // 1
"canal".lastIndexOf("a",0) // -1
"canal".lastIndexOf("x") // -1
- substring()
方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。
str.substring(indexStart[, indexEnd])
substring
提取从 indexStart
到 indexEnd
(不包括)之间的字符。特别地:
- 如果
indexStart
等于indexEnd
,substring
返回一个空字符串。 - 如果省略
indexEnd
,substring
提取字符一直到字符串末尾。 - 如果任一参数小于 0 或为
NaN
,则被当作 0。 - 如果任一参数大于
stringName.length
,则被当作stringName.length
。 - 如果
indexStart
大于indexEnd
,则substring
的执行效果就像两个参数调换了一样。
var anyString = "Mozilla";
// 输出 "Moz"
console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));
console.log(anyString.substring(3,-3));
console.log(anyString.substring(3,NaN));
console.log(anyString.substring(-2,3));
console.log(anyString.substring(NaN,3));
// 输出 "lla"
console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));
5.slice()
提取一个字符串的一部分,并返回一新的字符串。
str.slice(beginSlice[, endSlice]);
beginSlice
从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 sourceLength + beginSlice
看待,这里的sourceLength
是字符串的长度 (例如, 如果beginSlice
是 -3 则看作是: sourceLength - 3
)
endSlice
可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。如果该参数为负数,则被看作是sourceLength + endSlice
,这里的 sourceLength
就是字符串的长度(例如,如果 endSlice
是 -3,则是, sourceLength - 3
)。
var str1 = 'The morning is upon us.';
var str2 = str1.slice(4, -2); // morning is upon u
str.slice(-3); // returns 'us.'
str.slice(-3, -1); // returns 'us'
str.slice(0, -1); // returns 'The morning is upon us'
- substr()
substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。
str.substr(start[, length])
start
是一个字符的索引。首字符的索引为 0,最后一个字符的索引为 字符串的长度减去1。substr
从 start
位置开始提取字符,提取 length
个字符(或直到字符串的末尾)。
如果 start
为正值,且大于或等于字符串的长度,则 substr
返回一个空字符串。
如果 start
为负值,则 substr
把它作为从字符串末尾开始的一个字符索引。如果 start
为负值且 abs(start)
大于字符串的长度,则 substr
使用 0 作为开始提取的索引。注意负的 start
参数不被 Microsoft JScript 所支持。
如果 length
为 0 或负值,则 substr 返回一个空字符串。如果忽略 length,则 substr 提取字符,直到字符串末尾。
var str = "abcdefghij";
console.log("(1,2): " + str.substr(1,2)); // (1,2): bc
console.log("(-3,2): " + str.substr(-3,2)); // (-3,2): hi
console.log("(-3): " + str.substr(-3)); // (-3): hij
console.log("(1): " + str.substr(1)); // (1): bcdefghij
console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
console.log("(20, 2): " + str.substr(20,2)); // (20, 2):
- replace()
replace()
方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数。
str.replace(regexp|substr, newSubStr|function);
regexp
一个RegExp对象或者其字面量。改正则所匹配的内容会被第二个参数的返回值替掉。
substr
一个被 newSubStr
替换字符串。其被视为一整个字符串,而不是一个正则表达式。
newSubStr
用于替换第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名。
function
一个用来创建新字符串的函数,该函数的返回值将替代掉第一个参数匹配的结果。
返回值:返回一个部分或全部由替代模式所取代的新字符串。
// 使用正则表达式忽略大小写
var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr); // Twas the night before Christmas...
var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");
// oranges are round, and oranges are juicy.
console.log(newstr);
- search()
search()
方法执行正则表达式和 String对象之间的一个搜索匹配。regexp
一个正则表达式对象。如果传入一个非正则表达式对象,则会使用new RegExp(obj)隐式的将其转换为正则表达式对象。如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。
str.search(regexp);
当你想要知道字符串中是否存在某个模式(pattern)时可使用 search
,类似于正则表达式的 test 方法。当要了解更多匹配信息时,可使用 match(会更慢),该方法类似于正则表达式的 exec 方法。
- match()
str.match(regexp);
当一个字符串与正则表达式匹配时,match方法检索匹配项。
参数regexp
是一个正则表达式对象。如果传入一个非正则表达式对象,则会使用new RegExp(obj)隐式的将其转换为正则表达式对象。如果未提供参数直接使用match(),则会返回一个空字符串的数组:['']
。
返回值是array数组,如果字符串匹配到了表达式,会返回一个数组,数组的第一项是进行匹配的完整的字符串,后面的项是用圆括号捕获的结果。如果没有匹配到则返回null。
var url = 'http://www.baidu.com?a=1&b=2&c=3';
var reg = /([^?&=]+)=([^?&=])*/g;
var result = url.match(reg);
console.log(result); //["a=1", "b=2", "c=3"]
后续……