查找

charAt() —— ES3

定义:根据指定的字符索引查找字符
语法:str.charAt(index)
参数:一个介于0 和字符串长度减1之间的整数。 (0~length-1);如果没有提供索引,charAt() 将使用0
返回值:从一个字符串中返回指定的字符
注意事项:如果指定的参数 index 值超出了 stringName.length - 1 范围,则返回一个空字符串
代码示例:

  1. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  2. s.charAt(2); //"明"

indexOf() ——ES3

定义:搜索第一次出现的指定值的索引
语法:

  • str.indexOf(searchValue)
  • str.indexOf(searchValue, fromIndex)

参数:

  • searchValue:被指定查找的字符串
  • fromIndex:可选。表示开始查找的位置。可以是任意整数,默认值为 0。如果 fromIndex 小于 0,则查找整个字符串(等价于传入了 0)。如果 fromIndex 大于等于 str.length,则必返回 -1。

返回值:指定值的第一次出现的索引;如果没有找到,则返回 -1。若被查找的字符串是一个空字符串,则返回值在0—-str.length 之间,即:

  • fromIndex 小于等于 0 时,返回 0;
  • fromIndex 大于 0 且小于等于 str.length 时,返回 fromIndex;
  • fromIndex 大于字符串长度 str.length 时,返回 str.length。

注意事项:indexOf 方法区分大小写
代码示例:

  1. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  2. s.indexOf('秦'); // 0
  3. s.includes('汉'); // 4
  4. s.includes('龙'); // 18
  5. s.includes('凤'); // -1
  6. s.includes('war'); // -1
  7. // fromIndex 小于等于 0 时,返回 0
  8. s.indexOf(''); // 0
  9. // fromIndex 大于 0 且小于等于 str.length 时,返回 fromIndex
  10. s.indexOf('',5); // 5
  11. // fromIndex 大于字符串长度 str.length 时,返回 str.length
  12. s.indexOf('',50); //31
  13. // 区分大小写
  14. var s = 'A,b,C,d,E,f,g,H,i';
  15. s.indexOf('a'); // -1
  16. //统计一个字符在字符串中出现的次数
  17. var s = '年年岁岁花相似,岁岁年年花不同';
  18. var count = 0;
  19. var index = s.indexOf('年');
  20. for(let i=0;i<s.length;i++){
  21. if(index != -1){
  22. count++;
  23. index = s.indexOf('年', index + 1);
  24. }
  25. }
  26. console.log(count); // 4

lastIndexOf() ——ES3

定义:搜索最后一次出现的指定值的索引
语法:str.lastIndexOf(searchValue[, fromIndex])
参数:

  • searchValue:被指定查找的字符串
  • fromIndex:可选。从索引0开始到此位置之间查找。可以是任意整数。默认值为 str.length。如果为负值,则被看作 0。如果 fromIndex > str.length,则 fromIndex 被看作 str.length。

注意事项:lastIndexOf 方法区分大小写
代码示例:

  1. var s = '年年岁岁花相似,岁岁年年花不同';
  2. s.lastIndexOf('年'); // 11
  3. // 在从0开始到9结束这段字符串内查找最后一个'年';
  4. s.lastIndexOf('年',9); // 1

判断

includes() ——ES6

定义:用于判断一个字符串是否包含在另一个字符串中
语法:str.includes(searchString[, position])
参数:

  • searchString:要在此字符串中搜索的字符串
  • position:可选。从当前字符串的哪个索引位置开始搜寻子字符串,默认值为0

返回值:如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false
注意事项:

  • Firefox 18 - 39中,这个方法的名称叫 contains())
  • includes() 方法是区分大小写的

代码示例:

  1. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  2. s.includes('秦'); // true
  3. s.includes('汉'); // true
  4. s.includes('龙'); // true
  5. s.includes('凤'); // false
  6. s.includes('war'); // false

正则匹配

match() ——ES3

定义:通过匹配模式查找字符串
语法:str.match(regexp)
参数:一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array :[“”]
返回值:

  • 如果使用g标志,则将返回与完整正则表达式匹配的所有结果(Array),但不会返回捕获组,或者未匹配 null
  • 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性,或者未匹配 null

注意事项:

  • 如果正则表达式不包含 g 标志,str.match() 将返回与 RegExp.exec(). 相同的结果
  • 兼容性

代码示例:

  1. // 全局查找并忽略大小写
  2. var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  3. var regexp = /[A-E]/gi;
  4. var matches_array = str.match(regexp);
  5. console.log(matches_array); // ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
  6. // 不传参数
  7. var str = "Nothing will come of nothing.";
  8. str.match(); // returns [""]

replace() ——ES3

定义:通过匹配模式替换字符串
语法:str.replace(regexp|substr, newSubStr|function)
参数:

  • regexp:一个RegExp 对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉
  • substr: 一个将被 newSubStr 替换的 字符串。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配项会被替换
  • newSubStr:用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名
  • function:一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果

使用字符串作为参数:

替换字符串可以插入下面的特殊变量名

变量名 代表的值
$$ 插入一个 “$”
$& 插入匹配的子串
$` 插入当前匹配的子串左边的内容
$’ 插入当前匹配的子串右边的内容
$n 假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。提示:索引是从1开始

指定一个函数作为参数:

你可以指定一个函数作为第二个参数。在这种情况下,当匹配执行后,该函数就会执行。 函数的返回值作为替换字符串。 (注意:上面提到的特殊替换参数在这里不能被使用。) 另外要注意的是,如果第一个参数是正则表达式,并且其为全局匹配模式,那么这个方法将被多次调用,每次匹配都会被调用

变量名 代表的值
match 匹配的子串。(对应于上述的$&)
p1,p2, … 假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+
offset 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 ‘abcd’,匹配到的子字符串是 ‘bc’,那么这个参数将会是 1)
string 被匹配的原字符串
NamedCaptureGroup 命名捕获组匹配的对象

返回值:一个部分或全部匹配由替代模式所取代的新的字符串
注意事项:

  • 该方法并不改变调用它的字符串本身,而只是返回一个新的替换后的字符串
  • 兼容性

代码示例:

  1. var s = '秦时明月汉时关,万里长城人未还,但使龙城飞将在,不教胡马度阴山';
  2. var newS = s.replace(/城/,'征');
  3. console.log(newS); // "秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"
  4. // 全局替换
  5. var s = '年年岁岁花相似,岁岁年年花不同';
  6. var newS = s.replace(/花/g,'人');
  7. console.log(newS); // "年年岁岁人相似,岁岁年年人不同"
  8. // 交换
  9. var s = 'A B';
  10. var newS = s.replace(/(\w)\s(\w)/,'$2 $1');
  11. console.log(newS); // "B A"

search() ——ES3

定义:通过匹配模式查找在字符串中首次匹配项的索引
语法:str.search(regexp)
参数:一个正则表达式(regular expression)对象。如果传入一个非正则表达式对象 obj,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象
返回值:如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
注意事项:兼容性
代码示例:

  1. var str = 'Hello World';
  2. var regexp = str.search(/[A-E]/gi);
  3. console.log(regexp); // 1
  4. var regexp = str.search(/[.]/g);
  5. console.log(regexp); // -1

截取

slice() ——ES3

定义:提取某个字符串的一部分
语法:str.slice(beginIndex[, endIndex])
参数:

  • beginIndex:从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 strLength + beginIndex 看待,这里的strLength 是字符串的长度(例如, 如果 beginIndex 是 -3 则看作是:strLength - 3)
  • endIndex:可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice() 会一直提取到字符串末尾。如果该参数为负数,则被看作是 strLength + endIndex,这里的 strLength 就是字符串的长度(例如,如果 endIndex 是 -3,则是, strLength - 3)

返回值:返回一个从原字符串中提取出来的新字符串
注意事项:slice() 提取的新字符串包括beginIndex但不包括 endIndex
代码示例:

  1. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  2. var newS = s.slice(0,7);
  3. console.log(newS); // "秦时明月汉时关"
  4. var s = '年年岁岁花相似,岁岁年年花不同';
  5. var newS = s.slice(-7);
  6. console.log(newS); // "岁岁年年花不同"
  7. // .运算符在这里代表+
  8. var s = '年年岁岁花相似,岁岁年年花不同';
  9. var newS = s.slice(-6.-1);
  10. console.log(newS); // "岁岁年年花不同"

substring() ——ES3

定义:提取某个字符串的一部分
语法:str.substring(indexStart[, indexEnd])
参数:

  • indexStart:需要截取的第一个字符的索引,该字符作为返回的字符串的首字母
  • indexEnd:可选。一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内

返回值:包含给定字符串的指定部分的新字符串
注意事项:

  • substring 提取从 indexStart 到 indexEnd(不包括)之间的字符。特别地:
    • 如果 indexStart 等于 indexEnd,substring 返回一个空字符串。
    • 如果省略 indexEnd,substring 提取字符一直到字符串末尾。
    • 如果任一参数小于 0 或为 NaN,则被当作 0。
    • 如果任一参数大于 stringName.length,则被当作 stringName.length。
    • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。

代码示例:

  1. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  2. var newS = s.substring(0,7);
  3. console.log(newS); // "秦时明月汉时关"
  4. var newS = s.substring(7,0);
  5. console.log(newS); // "秦时明月汉时关"
  6. var newS = s.substring(7,NaN);
  7. console.log(newS); // "秦时明月汉时关"
  8. var newS = s.substring(NaN,7);
  9. console.log(newS); // "秦时明月汉时关"
  10. var newS = s.substring(-5,7);
  11. console.log(newS); // "秦时明月汉时关"
  12. var newS = s.substring(7,-5);
  13. console.log(newS); // "秦时明月汉时关"
  14. var newS = s.substring(7,7);
  15. console.log(newS); // ""
  16. var newS = s.substring(0,100);
  17. console.log(newS); // "秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"
  18. var newS = s.substring(100,0);
  19. console.log(newS); // "秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"

split() ——ES3

定义:使用指定的分隔符字符串将一个String对象分割成字符串数组
语法:str.split([separator[, limit]])
参数:

  • separator:分隔符,可以是一个字符串或正则表达式
  • limit:可选。一个整数,限定返回的分割片段数量

返回值:返回源字符串以分隔符出现位置分隔而成的一个 Array
注意事项:

  • 如果空字符串(“”)被用作分隔符,则字符串会在每个字符之间分割。
  • 当字符串为空时,split()返回一个包含一个空字符串的数组,而不是一个空数组,如果字符串和分隔符都是空字符串,则返回一个空数组。
  • 找到分隔符后,将其从字符串中删除,并将子字符串的数组返回。如果没有找到或者省略了分隔符,则该数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str转换为字符数组。如果分隔符出现在字符串的开始或结尾,或两者都分开,分别以空字符串开头,结尾或两者开始和结束。因此,如果字符串仅由一个分隔符实例组成,则该数组由两个空字符串组成。
  • 如果分隔符是包含捕获括号的正则表达式,则每次分隔符匹配时,捕获括号的结果(包括任何未定义的结果)将被拼接到输出数组中。但是,并不是所有浏览器都支持此功能。

代码示例:

  1. // 省略分隔符
  2. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  3. s.split(); // ["秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"]
  4. // 分隔符为空字符串
  5. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  6. s.split(''); // ["秦", "时", "明", "月", "汉", "时", "关", ",", "万", "里", "长", "征", "人", "未", "还", ",", "但", "使", "龙", "城", "飞", "将", "在", ",", "不", "教", "胡", "马", "度", "阴", "山"]
  7. // 没有找到对应的分隔符
  8. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  9. s.split(' '); // ["秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"]
  10. // 分隔符出现在字符串的开头
  11. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  12. s.split('秦'); // ["", "时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山"]
  13. // 分隔符出现在字符串的结尾
  14. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山';
  15. s.split('山'); // ["秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴", ""]
  16. // 分隔符出现在字符串的开头和结尾
  17. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山秦';
  18. s.split('秦'); // ["", "时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山", ""]
  19. // 字符串仅由一个分隔符实例组成
  20. var s = '秦';
  21. s.split('秦'); // ["", ""]
  22. // 字符串和分隔符都为空,返回一个空数组
  23. var s = '';
  24. s.split(''); // []
  25. // 以字符串中的逗号作为分隔符
  26. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山秦';
  27. s.split(','); // ["秦时明月汉时关", "万里长征人未还", "但使龙城飞将在", "不教胡马度阴山秦"]
  28. // 限制分割个数
  29. var s = '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山秦';
  30. s.split(',',2); // ["秦时明月汉时关", "万里长征人未还"]

大小写转换

toUpperCase() ——ES3

定义:将字符串值转换为大写形式
语法:str.toUpperCase()
参数:
返回值:返回调用toUpperCase 方法的字符串的大写形式
注意事项:不影响原字符串本身的值
代码示例:

  1. var s = 'abcdefg';
  2. s.toUpperCase(); // "ABCDEFG"

toLowerCase() ——ES3

定义:将字符串值转换为小写形式
语法:str.toLowerCase()
参数:
返回值:返回调用toLowerCase 方法的字符串的小写形式
注意事项:不影响原字符串本身的值
代码示例:

  1. var s = 'ABCDEFG';
  2. s.toLowerCase(); // "abcdefg"

toLocaleUpperCase() ——ES3

定义:使用本地化(locale-specific)的大小写映射规则将输入的字符串转化成大写形式
语法:str.toLocaleUpperCase()
参数:
返回值:一个新的字符串,即根据本地化的大小写映射规则将输入的字符串转化成大写形式的结果
注意事项:不影响原字符串本身的值
代码示例:

  1. var s = 'abcdefg';
  2. s.toLocaleUpperCase(); // "ABCDEFG"

toLocaleLowerCase() ——ES3

定义:根据任何特定于语言环境的案例映射,返回调用字符串值转换为小写的值
语法:str.toLocaleLowerCase()
参数:
返回值:根据任何特定于语言环境的案例映射,将表示调用字符串的新字符串转换为小写
注意事项:不影响原字符串本身的值
代码示例:

  1. var s = 'ABCDEFG';
  2. s.toLocaleLowerCase(); // "abcdefg"
  3. var s = '中文简体 zh-CN || zh-Hans';
  4. s.toLocaleLowerCase(); // "中文简体 zh-cn || zh-hans"

去空格

trim() ——ES3

定义:从一个字符串的两端删除空白字符
语法:str.trim()
参数:
返回值:返回一个新的字符串
注意事项:不影响原字符串本身的值
代码示例:

  1. var s = ' 年年岁岁花相似,岁岁年年花不同 ';
  2. s.trim(); // "年年岁岁花相似,岁岁年年花不同"
  3. var s = ' 年年岁岁花相似,岁岁年年花不同';
  4. s.trim(); // "年年岁岁花相似,岁岁年年花不同"