专题 字符串 方法

你将知道:

  • 使用 toLowerCase()toUpperCase() 更改大小写
  • 使用 trim()trimStart()trimEnd() 修剪空格
  • 使用 indexOf()lastIndexOf() 搜索
  • 使用 split() 分割字符串
  • 使用 slice()substring() 对字符串进行切片
  • 使用 replace()replaceAll() 替换子字符串 懒得介绍了


toLowerCase() and toUpperCase()

'Hello World!'.toLowerCase() >>> 'hello world'
'Hello World!'.toUpperCase() >>> 'HELLO WORLD!'

修剪空白字符

空白字符包括空格、制表符 ( \t )、回车符 ( \r ) 和换行符 ( \n )。


搜索子字符串

它们是 indexOf()lastIndexOf()

indexOf() 方法返回主字符串中给定子字符串首次出现的索引。如果未找到该子字符串,则返回 -1

string.indexOf(substring[, index])

substring 是要在 string 中搜索的字符串,而 index 是要开始搜索的位置。默认情况下, index 设置为 0 字符串的开头。如果在 string 中找到 substring ,则返回其索引,否则返回值 -1

考虑下面的代码:

var str = 'Hello World!'; 
console.log(str.indexOf('World')); // 6

我们使用 indexOf()str 中搜索 'World' 。返回的是 6 ,这是子字符串 'World'str 中的起始位置( 'Hello W orld!' )。

让我们考虑另一个例子。

var str = 'Hello World!';
console.log(str.indexOf('o')); // 4

这里我们尝试在 str 中搜索字符 'o' ,返回 4 这是因为 indexOf() 只关心第一个匹配项。

当我们想要再次搜索,超出子字符串第一次出现的索引时, indexOf() 的第二个参数很方便。

var str = 'Hello';

var i = str.indexOf('l');
console.log(i); // 2

i = str.indexOf('l', i + 1);
console.log(i); // 3

console.log(str.indexOf('l', i + 1)); // -1

首先,我们检索 str 中第一次出现的 'l' 的索引。结果为 2'He l lo World!' 中高亮字符的索引)。

接下来,我们通过向 indexOf() 传入第二个参数,比上次出现的 'l' 的索引大 1,来检索 str 中下一个出现的 'l' 的索引。结果为 3 (即 'Hel l o World!' 中高亮字符的索引)。

之后,我们再次检索 str 中最后一个索引之后下一个出现的 'l' 的索引。由于 str 中不再出现 'l' ,因此返回 -1

拆分字符串

可以使用 split() 方法将字符串分解为子字符串数组。split() 方法在每次出现给定分隔符时将字符串拆分开,并返回包含剩余子字符串的数组。

string.split([separator[, limit]])
  • separator 指定分隔符,用于分隔主字符串。如果省略, split() 将返回包含整个字符串的数组。
  • limit 指定返回数组中元素的最大数量。如果省略,则默认为 2 32 - 1 。

举个例子,假设我们要从字符串 '10,20,30' 中提取数字。我们可以做的就是在这个字符串上简单地调用 split() 函数,并指定 ',' 字符作为分隔符。

'Hello'.split()
>>> ["Hello"]
'H e l l o'.split(' ')
>>> ["H", "e", "l", "l", "o"]
'Hello'.split('', 10)
>>> ['H', 'e', 'l', 'l', 'o']

'Hello'.split('', 2)
>>> ['H','e']
'Hello'.split('', 0)
>>> []

默认情况下, limit 被设置为一个非常大的值,即 2 32 - 1 ,在几乎所有前端字符串处理问题中都不会触及这个值。哪有那么大的字符串

切片字符串

处理字符串时,另一种常见的做法是从给定字符串中提取一小部分。这通常称为字符串切片

1. slice()

slice() 方法将字符串从起始位置切到结束位置 ,并返回切片。

string.slice([start[, end]])
  • start 指定切片的起始索引。默认值为 0
  • end 指定切片结束的索引。此参数不包含索引。默认为字符串的长度。

'Hello'.slice()
>>> 'Hello'
'Hello'.slice(1)
>>> 'ello'
'Hello'.slice(1,2)
>>> 'e'

请注意, end 参数是独占的 ,也就是说,切片在给定的 end 索引之前结束 slice() 最有趣的地方在于,我们也可以为其提供负索引。这样的索引是从字符串末尾计算的。例如, -1 指向最后一个字符, -2 指向倒数第二个字符,依此类推。

'Coding'.slice(-2)
>>> 'ng'
其实可以从  str.length - 2 开始数
'Coding'.slice(-2, -1)
>>> 'n'
其实相当于  'coding'.slice(4,5)

2. substring()

slice() 类似, substring() 方法将字符串从起始位置切到结束位置 ,并返回切片。

slice()substring() 之间的区别

主要区别在于 slice()substring() 的内部实现中给定参数的感知方式。

如果 substring()start 参数大于 end ,则参数会被交换。但 slice() 不会发生这种情况。

此外,如果 substring() 的给定参数为负数,则它将被视为 0 ,这与从字符串末尾开始计数的 slice() 不同。

'Hello'.slice(2, 0)
>>>  '' 
'Hello'.substring(2, 0)
'He'

'Hello'.slice(-2, -1) 
>>> 'l'
'Hello'.substring(-2, -1)
>>> ''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值