JS字符串方法
charAt()
1 | str.charAt(index) |
描述
charAt()
方法从一个字符串中返回指定的字符。
参数
index
一个介于0 和字符串长度减1之间的整数 (0~length-1)如果没有提供索引,charAt()
将使用0。
返回值
返回指定的字符,如果指定的 index 值超出了该范围,则返回一个空字符串。
示例
输出字符串中不同位置的字符
1 | var anyString = "Brave new world"; |
concat()
1 | str.concat(str2, [, ...strN]) |
描述
concat
方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat
方法并不影响原字符串。如果参数不是字符串类型,它们在连接之前将会被转换成字符串。
参数
str2 [, ...strN]
需要连接到 str
的字符串。
返回值
一个新的字符串,包含参数所提供的连接字符串。
示例
1 | let hello = 'Hello, ' |
includes()
1 | str.includes(searchString[, position]) |
描述
includes()
方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true
或 false
。includes()
方法是区分大小写的。
参数
searchString
要在此字符串中搜索的字符串。
position
可选
从当前字符串的哪个索引位置开始搜寻子字符串,默认值为 0
。
返回值
如果当前字符串包含被搜寻的字符串,就返回 **true
**;否则返回 **false
**。
示例
1 | var str = 'To be, or not to be, that is the question.'; |
indexOf()
1 | str.indexOf(searchValue [, fromIndex]) |
描述
indexOf()
方法返回调用它的 String
对象中第一次出现的指定值的索引,从 fromIndex
处进行搜索。如果未找到该值,则返回 -1
。
参数
searchValue
要被查找的字符串值。如果没有提供确切地提供字符串,searchValue 会被强制设置为 "undefined"
, 然后在当前字符串中查找这个值。举个例子:'undefined'.indexOf()
将会返回0,因为 undefined
在位置0处被找到,但是 'undefine'.indexOf()
将会返回 -1 ,因为字符串 'undefined'
未被找到。
fromIndex
可选
数字表示开始查找的位置。可以是任意整数,默认值为 0
。如果 fromIndex
的值小于 0
,或者大于 str.length
,那么查找分别从 0
和str.length
开始。(译者注: fromIndex
的值小于 0
,等同于为空情况; fromIndex
的值大于或等于 str.length
,那么结果会直接返回 -1
。)举个例子,'hello world'.indexOf('o', -5)
返回 4
,因为它是从位置0
处开始查找,然后 o
在位置4
处被找到。另一方面,'hello world'.indexOf('o', 11)
(或 fromIndex
填入任何大于11
的值)将会返回 -1
,因为开始查找的位置11
处,已经是这个字符串的结尾了。
返回值
查找的字符串 searchValue
的第一次出现的索引,如果没有找到,则返回 -1
。
若被查找的字符串 searchValue
是一个空字符串,将会产生“奇怪”的结果。如果 fromIndex
值为空,或者 fromIndex
值小于被查找的字符串的长度,返回值和以下的 fromIndex
值一样:
1 | 'hello world'.indexOf('') // 返回 0 |
另外,如果 fromIndex
值大于等于字符串的长度,将会直接返回字符串的长度(str.length
):
1 | 'hello world'.indexOf('', 11) // 返回 11 |
Copy to Clipboard
从前面一个例子可以看出,被查找的值是空值时,JavaScript将直接返回指定的索引值。从后面一个例子可以看出,被查找的值是空值时,JavaScript将直接返回字符串的长度。
示例
使用indexOf()
和 lastIndexOf()
1 | var anyString = "Brave new world"; |
indexOf
和区分大小写
1 | var myString = "brie, pepper jack, cheddar"; |
使用 indexOf
统计一个字符串中某个字母出现的次数
1 | // 翻译:生存还是毁灭?这是个问题。(莎士比亚《哈姆雷特》) |
match()
1 | str.match(regexp) |
描述
match()
方法检索返回一个字符串匹配正则表达式的结果。
参数
regexp
一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj)
将其转换为一个 RegExp
。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array
:[""]
。
返回值
- 如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
- 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(
Array
)。 在这种情况下,返回的项目将具有如下所述的其他属性。
附加属性
如上所述,匹配的结果包含如下所述的附加特性。
groups
: 一个捕获组数组 或undefined
(如果没有定义命名捕获组)。index
: 匹配的结果的开始位置input
: 搜索的字符串.
一个Array
,其内容取决于global(g
)标志的存在与否,如果未找到匹配则为null
。
示例
使用match
1 | var str = 'For more information, see Chapter 3.4.5.1'; |
一个非正则表达式对象作为参数
当参数是一个字符串或一个数字,它会使用new RegExp(obj)来隐式转换成一个 RegExp
。如果它是一个有正号的正数,RegExp() 方法将忽略正号。
1 | var str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.", |
replace()
1 | str.replace(regexp|substr, newSubStr|function) |
描述
该方法并不改变调用它的字符串本身,而只是返回一个新的替换后的字符串。
在进行全局的搜索替换时,正则表达式需包含 g
标志。
参数
regexp
(pattern)
一个RegExp
对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
substr
(pattern)
一个将被 newSubStr
替换的 字符串
。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配项会被替换。
newSubStr
(replacement)
用于替换掉第一个参数在原字符串中的匹配部分的字符串
。该字符串中可以内插一些特殊的变量名。参考下面的使用字符串作为参数。
function
(replacement)
一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。参考下面的指定一个函数作为参数。
返回值
一个部分或全部匹配由替代模式所取代的新的字符串。
示例
在 replace()
中使用正则表达式
1 | var str = 'Twas the night before Xmas...'; |
在 replace()
中使用 global
和 ignore
选项
1 | var re = /apples/gi; |
交换字符串中的两个单词
1 | var re = /(\w+)\s(\w+)/; |
使用行内函数来修改匹配到的字符。
1 | function styleHyphenFormat(propertyName) { |
search()
1 | str.search(regexp) |
描述
search()
方法执行正则表达式和 String
对象之间的一个搜索匹配。
参数
regexp
一个正则表达式(regular expression)
对象。如果传入一个非正则表达式对象 regexp
,则会使用 new RegExp(regexp)
隐式地将其转换为正则表达式对象。
返回值
如果匹配成功,则 search()
返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
。
示例
使用 search()
1 | var str = "hey JudE"; |
slice()
1 | str.slice(beginIndex[, endIndex]) |
描述
slice()
方法提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。
参数
beginIndex
从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 strLength + beginIndex
看待,这里的strLength
是字符串的长度(例如, 如果 beginIndex
是 -3 则看作是:strLength - 3
)
endIndex
可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice()
会一直提取到字符串末尾。如果该参数为负数,则被看作是 strLength + endIndex
,这里的 strLength
就是字符串的长度(例如,如果 endIndex
是 -3,则是, strLength - 3
)。
返回值
返回一个从原字符串中提取出来的新字符串
示例
使用 slice()
创建一个新的字符串
1 | var str1 = 'The morning is upon us.', // str1 的长度 length 是 23。 |
给 slice()
传入负值索引
1 | var str = 'The morning is upon us.'; |
split()
1 | str.split([separator[, limit]]) |
描述
split()
方法使用指定的分隔符字符串将一个String
对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
参数
separator
指定表示每个拆分应发生的点的字符串。separator
可以是一个字符串或正则表达式。 如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。
limit
一个整数,限定返回的分割片段数量。当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。新数组中不返回剩下的文本。
返回值
返回源字符串以分隔符出现位置分隔而成的一个 Array
示例
移除字符串中的空格
1 | var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand "; |
限制返回值中分割元素数量
1 | var myString = "Hello World. How are you doing?"; |
靠正则来分割使结果中包含分隔块
1 | var myString = "Hello 1 word. Sentence number 2."; |
使用一个数组来作为分隔符
1 | const myString = 'this|is|a|Test'; |
substring()
1 | str.substring(indexStart[, indexEnd]) |
描述
substring
提取从 indexStart
到 indexEnd
(不包括)之间的字符。特别地:
- 如果
indexStart
等于indexEnd
,substring
返回一个空字符串。 - 如果省略
indexEnd
,substring
提取字符一直到字符串末尾。 - 如果任一参数小于 0 或为
NaN
,则被当作 0。 - 如果任一参数大于
stringName.length
,则被当作stringName.length
。 - 如果
indexStart
大于indexEnd
,则substring
的执行效果就像两个参数调换了一样。见下面的例子。
参数
indexStart
需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。
indexEnd
可选。一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内。
返回值
包含给定字符串的指定部分的新字符串。
示例
使用 substring
1 | var anyString = "Mozilla"; |
替换一个字符串的子字符串
下例替换了一个字符串中的子字符串。可以替换单个字符和子字符串。该例结尾调用的函数将 “Brave New World
“ 变成了 “Brave New Web
“。
1 | function replaceString(oldS, newS, fullS) { |
toString()
1 | str.toString() |
描述
toString()
方法返回指定对象的字符串形式。
返回值
一个表示调用对象的字符串。
示例
1 | var x = new String("Hello world"); |
trim()
1 | str.trim() |
描述
trim()
方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。
返回值
一个代表调用字符串两端去掉空白的新字符串。
示例
1 | var orig = ' foo '; |