如何在JavaScript中处理索引,拆分,处理字符串
前言
string 是一个或多个可能由字母,数字或符号组成的字符序列,在JavaScript中可以通过索引访问字符串中任意字符,并且字符串有很多可用的方法和属性。
在本教程中,我们将了解字符串和String
对象之间的区别,如何为字符串建立索引,如何访问字符串中的字符以及日常工作中经常使用字符串的属性和方法。
字符串和字符串对象
为了测试两者之间的差异,我们将初始化一个字符串和一个字符串对象。
// Initializing a new string primitive
const stringPrimitive = 'A new string.'
// Initializing a new String object
const stringObject = new String('A new string.')
可以使用typeof
来确定值的类型。
typeof stringPrimitive
string
在第二个示例中,我们使用new String()
创建一个字符串对象并将其分配给变量。
typeof stringObject
object
字符串是如何索引的
在字符串中每个字符都对应一个字符索引,从0
开始。
我们可以新建一个字符串How are you?
。
H | o | w | a | r | e | y | o | u | ? | ||
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
第一个字符是H
,对应着0
索引。最后一个字符是?
,对应着11
。即使是空格字符在3
和7
也是有索引的。
访问字符
下面我们将演示如何访问字符
'How are you?'
使用括号表示法,我们可以访问字符串中任何字符。
'How are you?'[5]
r
我们也可以通过用索引为参数的chartAt()
方法,访问字符串中任何字符。
'How are you?'.charAt(5)
r
反之,我们也可以通过字符为参数的indexOf()
方法,获取当前字符的索引。
'How are you?'.indexOf('o')
1
尽管o
在How are you
字符串中出现两次,但是indexof(‘o’)
只会返回第一个o
字符的索引
lastIndexOf('o')
就可以用来返回最后一个o
字符的索引。
'How are you?'.lastIndexOf('o')
9
这些方法,我们也可以以字符串为参数,它会返回第一个字符的索引。
'How are you?'.indexOf('are')
4
反之,slice()
方法以开始和结束索引为参数,返回一个字符串。
'How are you?'.slice(8, 11)
you
可能你会观察到11
就是?
,但是?
并没有输出。原因是结束索引11
不包含,只到它前一个10
。
'How are you?'.slice(8)
you?
简而言之,charAt()
和slice()
将帮助根据索引号返回字符串值,而indexOf()
和lastIndexOf()
则相反,根据提供的字符串字符返回索引号 。
字符串长度
使用length
属性,可以返回一个字符串的长度。
'How are you?'.length
12
这里面有个注意点,length
属性返回的是从1
开始到12
结束的实际长度12
,而不是从0
开始到11
结束的索引长度11
。
大小写转化
在JavaScript中有两个自带的方法toUpperCase()
和toLowerCase()
,这个看字面就可以理解的。
'How are you?'.toUpperCase()
HOW ARE YOU?
'How are you?'.toLowerCase()
how are you?
值得注意的是,这些方法不会更改原始字符串。
分割字符串
JavaScript方法使用指定的分隔符字符串将一个String
对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
const originalString = 'How are you?'
// 通过一个空字符分割字符串成数组
const splitString = originalString.split(' ')
console.log(splitString)
[ 'How', 'are', 'you?' ]
有了分割后返回的数组,我们就可以操作这数组中的值。
splitString[1]
are
如果没有传入参数, split()
会把字符串分割成每个字符。
去除空格
JavaScript的trim()
方法可以把字符串的两端空格删除,但不能删除中间的空格。空格可以是制表符。
const tooMuchWhitespace = ' How are you? '
const trimmed = tooMuchWhitespace.trim()
console.log(trimmed)
How are you?
查找和替换字符串值
我们可以在字符串中搜索值,然后使用replace()
方法将其替换为新值。 第一个参数将是要找到的值,第二个参数将是要替换为的值。
const originalString = 'How are you?'
// Replace the first instance of "How" with "Where"
const newString = originalString.replace('How', 'Where')
console.log(newString)
Where are you?
我们还可以在replace()
第一个参数中使用正则表达式。 例如,replace()
仅影响第一个值,但是我们可以使用g
(全局)标志来字符串中所有待替换值,而可以使用i
(不区分大小写)标志来忽略大小写。
const originalString = "Javascript is a programming language. I'm learning javascript."
// Search string for "javascript" and replace with "JavaScript"
const newString = originalString.replace(/javascript/gi, 'JavaScript')
console.log(newString)
JavaScript is a programming language. I'm learning JavaScript.
想要练习更多的正则表达式可以访问Regexr 这个网站。