美文网首页
字符串常用方法及字符串的扩展

字符串常用方法及字符串的扩展

作者: freedomsw | 来源:发表于2018-06-14 20:22 被阅读0次

字符串基础方法

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
  1. substring()
    方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。
str.substring(indexStart[, indexEnd])

substring 提取从 indexStartindexEnd(不包括)之间的字符。特别地:

  • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
  • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
  • 如果任一参数小于 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'
  1. substr()
    substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。
str.substr(start[, length])

start 是一个字符的索引。首字符的索引为 0,最后一个字符的索引为 字符串的长度减去1。substrstart 位置开始提取字符,提取 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):
  1. 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);
  1. search()
    search() 方法执行正则表达式和 String对象之间的一个搜索匹配。regexp 一个正则表达式对象。如果传入一个非正则表达式对象,则会使用new RegExp(obj)隐式的将其转换为正则表达式对象。如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。
str.search(regexp);

当你想要知道字符串中是否存在某个模式(pattern)时可使用 search,类似于正则表达式的 test 方法。当要了解更多匹配信息时,可使用 match(会更慢),该方法类似于正则表达式的 exec 方法。

  1. 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"]

后续……

相关文章

网友评论

      本文标题:字符串常用方法及字符串的扩展

      本文链接:https://www.haomeiwen.com/subject/uyrgjftx.html