简介
String 类型是字符串的对象包装类型,可以用 String 构造函数的方法来创建。
1 | var str = new String('hello world'); |
该对象的方法也可以在所有基本的字符串值中访问到,其中继承的 valueOf()
、toLocaleString()
和 toString()
方法都返回对象所表示的基本字符串值。
String 类型的每个实例都有一个 length
属性,表示字符串中有多少个字符。
1 | var str = 'hello world'; |
字符方法
查询
charAt()
和 charCodeAt()
,这两个方法都接受一个参数,即基于 0 的字符位置。其中 charAt()
方法以单字符串的形式返回给定位置的那个字符。
1 | var str = 'hello world'; |
而 charCodeAt()
则是返回的字符编码。
1 | var str = 'hello world'; |
ECMAScript 5 中还可以用类似于数组的形式访问字符串中指定的字符。
1 | var str = 'hello world'; |
但是会有一定的兼容问题,在 IE7 及以下的浏览器中会返回 undefined
。
indexOf 和 lastIndexOf
有两个可以从字符串中查找子字符串的方法:indexOf()
和 lastIndexOf()
。这两个方法都是从一个字符串中搜寻给定的子字符串,然后返回子字符串的位置。如果没有找到该字符串,则会返回 -1。两者的区别在于,前者从字符串的开头向尾部搜索,后者从字符串的尾部向首部搜索。
1 | var str = "hello world"; |
如果指定的字符值只出现了一次,那么 indexOf()
和 lastIndexOf()
会返回相同的位置值。这两个方法都可以接受可选的第二个参数,用来表示从字符串中的哪个位置开始搜索,并会忽略该位置之前的所有字符。
1 | var str = "hello world"; |
利用这两种方法的特性,我们可以通过循环调用它们来查找所有匹配的子字符串:
1 | var str = 'everything be okay'; |
连接字符串
concat()
用于将一个或多个字符串拼接起来,返回拼接得到的新字符串。
1 | var str = 'hello'; |
用加号 +
也能进行字符串之间的拼接:
1 | var str = 'hello'; |
剪裁
slice()
、substr()
、substring()
这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一个或者两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定情况下)表示子字符串到哪里结束。具体来说,slice()
和 substring()
的第二个参数指定的是最后一个子字符串的位置,而 substr()
的第二个参数指定的则是返回的字符个数。如果没有给这些方法传递第二个参数,则将字符串的长度作为结束位置。与 concat()
方法一样,slice()
、substr()
和 substring()
也不会修改字符串本身的值,它们只是返回一个基本类型的字符串值,对原始字符串没有任何影响。
slice():
slice()
方法用于截取字符串的一部分。第一个参数代表开始位置,第二个参数代表结束位置的下一个位置。截取出来的字符串的长度为第二个参数与第一个参数之间的差。如果第二个参数值为负数,则将该值加上字符串长度后转为正值。如果第一个参数大于等于第二个参数,则返回空字符串。
示例:
1 | var str = "hello world"; |
substring():
substring()
方法用于截取字符串的一部分。第一个参数代表开始位置,第二个参数代表结束位置的下一个位置。与 slice()
方法表现相同。不同之处在于,当参数为负数时,substring()
方法会将所有的负值参数都转换为 0,并且 substring()
总是将最小的数作为起始位置。
示例:
1 | var str = "hello world"; |
substr():
substr()
方法用于截取字符串的一部分。与前面两个方法的不同之处在于,substr()
方法的第二个参数指定的是要返回的字符个数,而不是要返回的位置。
示例:
1 | var str = 'hello world'; |
split():
split()
方法可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个正则表达式对象。split()
方法还可以接受可选的第二个参数,用于指定数组的大小,以便确保返回的数组不会超过指定的大小。
示例:
1 | var colorText = 'red, blue, green, yellow'; |
trim():
trim()
方法会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果。trim()
返回的是字符串的副本,不会改变原始值。此外,还有指定具体方向的方法 trimLeft()
和 trimRight()
,用于删除字符串开头和末尾的空格。
示例:
1 | var str = " hello world "; |
大小写转换:
ECMAScript 中涉及字符串大小写转换的方法有4个:
toLowerCase()
: 将字符串转换为小写字母形式。toLocaleLowerCase()
: 针对特定地区实现正确转换的方法。toUpperCase()
: 将字符串转换为大写字母形式。toLocaleUpperCase()
: 针对特定地区实现正确转换的方法。
示例:
1 | var str = "Hello World"; |
匹配:
String 类型定义了几个用于在字符串中匹配模式的方法,其中一个是 match()
方法。该方法接受一个参数,可以是一个正则表达式或一个 RegExp 对象。
示例:
1 | var text = "cat, bat, sat, fat"; |
另一个方法是 search()
,它接受一个由字符串slice(), substring(), substr(), split(), trim(), toLowerCase(), toLocaleLowerCase(), toUpperCase(), toLocaleUpperCase(), match(), search() 等是 JavaScript 中用于操作字符串的方法。
slice(start, end)
: 返回从索引 start 到索引 end(不包含 end)之间的子字符串。如果省略 end,则截取到字符串末尾。可以使用负数来表示从字符串末尾开始计数。substring(start, end)
: 返回从索引 start 到索引 end(不包含 end)之间的子字符串。如果省略 end,则截取到字符串末尾。如果 start 大于 end,则交换两个参数的位置。不接受负数索引。substr(start, length)
: 返回从索引 start 开始的指定长度的子字符串。split(separator, limit)
: 将字符串分割成子字符串数组,使用指定的分隔符进行分割。可选的 limit 参数用于限制返回的数组的长度。trim()
: 删除字符串开头和末尾的空格,并返回结果。toLowerCase()
: 将字符串转换为小写形式。toLocaleLowerCase()
: 根据主机环境的当前语言环境将字符串转换为小写形式。toUpperCase()
: 将字符串转换为大写形式。toLocaleUpperCase()
: 根据主机环境的当前语言环境将字符串转换为大写形式。match(pattern)
: 在字符串中搜索与指定模式匹配的内容,并返回匹配的结果。pattern 可以是一个正则表达式或一个 RegExp 对象。search(pattern)
: 在字符串中搜索与指定模式匹配的内容,并返回第一个匹配的位置索引。pattern 可以是一个正则表达式或一个 RegExp 对象。
这些方法可以用于对字符串进行截取、分割、大小写转换、匹配等操作,方便处理和操作字符串数据。