JS字符串常用方法的使用

173 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

1. 字符串类型转换

将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种

var num = 10, str = null;
str = num.toString();
str = new String(num);
str = '' + num;

2. 字符串分割

split()有两个参数,执行后返回一个数组

  • 参数1:是根据指定内容进行截断,并且该内容会去除
  • 参数2:指定返会数组的最大长度,可选,如果指定长度过长,会忽略多余的长度
var str = "I,love,you,Do,you,love,me";
var result = null;
result = str.split(','); // ['I','love','you','do','you','love','me']
result = str.split(',', 3); // ['I','love','you']

3. 查询子字符串

indexOf():从字符串的开头(或指定位置)开始查找,找到第一个匹配的子字符串后返回对应下标,找不到返回-1。

传递两个参数:indexOf(str, start)

  • 参数1: 必需,进行查找的子字符串
  • 参数2: 可选。开始查找的起始位置,默认为 0。合法取值是 0 <= start <= length - 1,且必需为整数。忽略负值,
  • 查找是正方向进行的。
  • 查找方向和范围是 start -----> length - 1
var str = 'I,love,you,do,you,love,me';
var index = null;
index = str.indexOf('love'); // 2
index = str.indexOf('lave'); // -1

lastIndexOf():从字符串的末尾(或指定位置)开始查找,找到第一个匹配的子字符串后返回对应坐标,找不到返回-1。对应的坐标仍是正序位置

传递两个参数:lastIndexOf(str, start)

  • 参数1: 必需,进行查找的字符
  • 参数2: 可选。开始查找的起始位置,默认为字符的长度。合法取值是 0 <= start <= length - 1,且必需为整数。
  • 搜索是反方向进行的。
  • 搜索方向和范围是 0 <----- start
var str = 'I,love,you,do,you,love,me';
var index = null;
index = str.lastIndexOf('love'); // 18
index = str.lastIndexOf('lave'); // -1

4. 字符串替换

replace()有两个参数,执行后返回新的字符串

  • 参数1:需要被替换的子字符串,可以是指定字符串,还可以是正则表达式。对于正则表达式来说首先会根据是否全局的(全局//g)决定替换行为,如果是全部的则替换全部替换,非全局的只有替换首个匹配的字符串。
  • 参数2:替换字符串或生成替换字符串的函数。推荐使用函数。每次匹配到进行替换时都会执行该函数,返回值作为替换的新值。
参数2中函数参数的规定:
- 第一个参数为每次匹配的全文本($&)。
- 中间参数为子表达式匹配字符串,个数不限.( $i (i:1-99))
- 倒数第二个参数为匹配文本字符串的匹配下标位置。
- 最后一个参数表示字符串本身。
// 普通用法,只替换第一个
var str = "I,love,you,Do,you,love,me";
var result = null;
result = str.replace('love','hate'); // 'I,hate,you,do,you,love,me'
// 正则全局替换
var str = "I,love,you,Do,you,love,me";
var result = null;
result = str.replace(/love/g, 'hate'); // 'I,hate,you,do,you,hate,me'
// 复杂使用
// ......

5. 查找指定位置的字符或其字符编码值

charAt() 查找指定位置字符

var str = 'I,love,you,Do,you,love,me';
var char = null;
char = str.charAt(8); // 'o',同样从0开始
char = str.charAt(58); // '' 超出范围返回 空字符串,不是 null、undefined

charCodeAt() 查找指定位置字符的编码值(ASCII码),区分字母大小写,返回数据格式是 数字

var str = 'I,love,you,Do,you,love,me';
var char = null;
char = str.charCodeAt(8); // 111
char = str.charCodeAt(58); // NaN 超出范围返回 NaN

6. 字符串连接

使用 + 号连接

var str1 = 'Hello';
var str2 = ' World';
var str = str1 + str2; // 'Hello World';

concat() 连接方法,可以有传递多个参数,合并多个字符串

var str1 = 'I';
var str2 = ' Love';
var str3 = ' You'
var str = str1.concat(str2, str3); // 'I Love You';

7. 字符串切割和提取

slice() 提取字符串的某个部分,并以新的字符串返回被提取的部分。

传递两个参数:slice(start, end)

  • 参数1:截取的起始位置,必须
  • 参数2:截取的结束位置,可选。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。(从尾部开始算是从-1开始的)
  • 较小的数值须写在前面
  • 剩余字符串区段是 start <= str <= end
var str = '0123456789';
var str1 = str.slice(2, 6); // '2345'
var str2 = str.slice(-6, -4) // '45'
var str3 = str.slice(2); // '23456789'
var str4 = str.slice(-2); // '89'

substr() 方法可在字符串中从指定下标开始抽取指定数目的字符,作为一个新的字符串返回

传递两个参数:substr(start, length)

  • 参数1:截取的起始位置,必须。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。
  • 参数2:截取的长度,可选。如果省略了该参数,那么返回从指定的开始位置到结尾的字串。
  • 截取的长度区段都是正向的。如果指定的长度超过剩余长度,返回剩余的子字符串
  • 剩余的字符串区段是 start < str < start + length
  • ECMAscript 没有对该方法进行标准化,因此反对使用它。但是所有浏览器都支持。
var str = '0123456789';
var str1 = str.substr(2, 5); // '23456'
var str2 = str.substr(-7, 5); // '34567'
var str3 = str.substr(3); // '3456789'
var str4 = str.substr(-3); // '789'

substring() 方法用于提取两个指定下标之间的子字符串。

传递两个参数:substring(start, end)

  • 参数1:截取的起始位置。必需。非负整数。
  • 参数2:截取的结束位置。非必需,非负整数。如果省略该参数,那么返回的子串会一直到字符串的结尾。
  • 较小的数值须写在前面
  • 剩余字符串区段是 start <= str <= end
  • 只能正向截取,是 slice 的阉割版
var str = '0123456789';
var str1 = str.substring(2, 6); // '2345'
var str2 = str.substring(2); // '23456789'

8. 字符串大小写转换

大写转小写 toLowerCase()

var str = 'HELLO WORLD';
str = str.toLowerCase(); // 'hello world'

小写转大写 toUpperCase()

var str = 'hello world';
str = str.toUpperCase(); // 'HELLO WORLD'

9. 字符串匹配

match() 方法:在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回一个由匹配结果组成的数组

传递一个参数:match(regexp)

  • 必须,一个正则表达式
  • 返回数组的内容依赖于 regexp 是否具有全局标志 g。如果没有全局标志,返回一个类数组对象。 如果没找到匹配结果返回 null 。
var str = 'I,love,you,Do,you,love,me';
var pattern = /love/;
var arr = str.match(pattern); // ["love", index: 2, input: "I,love,you,Do,you,love,me"]
var str = 'I,love,you,Do,you,love,me';
var pattern = /love/g;
var arr = str.match(pattern); // ["love", "love"]
var str = 'I,love,you,Do,you,love,me';
var pattern = /hate/;
var arr = str.match(pattern); // null

exec() 方法:这是属于正则对象的方法,用法和 match 类似

regexp.exec(str),将字符串作为参数传递

使用全局匹配似乎没有效果......

var str = 'I,love,you,Do,you,love,me';
var pattern = /love/;
var arr = pattern.exec(str); // ["love", index: 2, input: "I,love,you,Do,you,love,me"]

search() 方法:检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

传递一个参数:search(str || regexp)

  • 参数必需。返回匹配到的第一个子字符串所在的位置。如没有匹配结果返回 -1。
var str = 'I,love,you,Do,you,love,me';
var pattern = /love/;
var index = str.search(pattern); // 3

10. 字符串比较

localeCompare():用本地特定的顺序来比较两个字符串。返回比较结果的数字。

传递一个参数:str.localeCompare(targetStr);

  • 返回 1:表示 str > targetStr;
  • 返回 -1:表示 str < targetStr;
  • 返回 0:表示 str = targetStr;
var str1 = 'a';
var str2 = 'b';
var str3 = 'a';
var index = null;
index = str1.localeCompare(str2); // -1
index = str2.localeCompare(str1); // 1
index = str1.localeCompare(str3); // 0

11. 去除空格

trim(),取出字符串前后的空格(中间的不能去除),返回新的字符串

空字符串也可以使用此方法

对于用户输入框内容整理很有用

var str = '    abc     ';
str = str.trim();
console.log(str); // 'abc'

12. 样式包装方法

样式包装方法大全