String常用的方法

1、charAt()方法返回给定索引位置的字符,由传给方法的整数参数指定。

比如:

let message = "abcde"; 
console.log(message.charAt(2)); // "c" 

2、concat(),用于将一个或多个字符串拼接成一个新的字符串

let stringValue = "hello "; 
let result = stringValue.concat("world", "!"); 
console.log(result); // "hello world!" 
console.log(stringValue); // "hello" 

3、JS提供了 3 个从字符串中提取子字符串的方法:slice()、substr()和 substring()。这 3个方法都返回调用它们的字符串的一个子字符串,而且都接收一或两个参数。第一个参数表示子字符串开始的下标的位置,第二个参数表示子字符串结束的位置。对 slice()和 substring()而言,第二个参数是提取结束的位置(即该位置之前的字符会被提取出来)。对 substr()而言,第二个参数表示返回的子字符串数量。 任何情况下,省略第二个参数都意味着提取到字符串末尾。与 concat()方法一样,slice()、substr() 和 substring()也不会修改调用它们的字符串,而只会返回提取到的原始新字符串值。

let stringValue = "hello world"; 
console.log(stringValue.slice(3)); // "lo world" 
console.log(stringValue.substring(3)); // "lo world" 
console.log(stringValue.substr(3)); // "lo world" 
console.log(stringValue.slice(3, 7)); // "lo w" 
console.log(stringValue.substring(3,7)); // "lo w" 
console.log(stringValue.substr(3, 7)); // "lo worl" 

在这个例子中,slice()、substr()和 substring()是以相同方式被调用的,而且多数情况下返回的值也相同。如果只传一个参数 3,则所有方法都将返回"lo world",因为"hello"中"l"位置为 3。如果传入两个参数 3 和 7,则 slice()和 substring()返回"lo w"(因为"world"中"o"在位置 7,不包含),如果从区间上将,是一个左闭右开的情况,就是包含第一个,不包含第二个。【3,7)。而 substr()返回"lo worl",因为第二个参数对它而言表示返回的字符数。

当某个参数是负值时,这 3 个方法的行为又有不同。比如,slice()方法将所有负值参数都当成字符串长度加上负参数值。 而 substr()方法将第一个负参数值当成字符串长度加上该值,将第二个负参数值转换为 0。 substring()方法会将所有负参数值都转换为 0。看下面的例子:

let stringValue = "hello world"; 
console.log(stringValue.slice(-3)); // "rld" 
console.log(stringValue.substring(-3)); // "hello world" 
console.log(stringValue.substr(-3)); // "rld" 
console.log(stringValue.slice(3, -4)); // "lo w" 
console.log(stringValue.substring(3, -4)); // "hel" 
console.log(stringValue.substr(3, -4)); // "" (empty string) 

这个例子明确演示了 3 个方法的差异。在给 slice()和 substr()传入负参数时,它们的返回结果 相同。这是因为-3 会被转换为 8(长度加上负参数),实际上调用的是 slice(8)和 substr(8)。而 substring()方法返回整个字符串,因为-3 会转换为 0。 在第二个参数是负值时,这 3 个方法各不相同。slice()方法将第二个参数转换为 7,实际上相当 于调用 slice(3, 7),因此返回"lo w"。而 substring()方法会将第二个参数转换为 0,相当于调用 substring(3, 0),等价于 substring(0, 3),这是因为这个方法会将较小的参数作为起点,将较 大的参数作为终点。对 substr()来说,第二个参数会被转换为 0,意味着返回的字符串包含零个字符, 因而会返回一个空字符串。

4、有两个方法用于在字符串中定位子字符串:indexOf()和 lastIndexOf()。这两个方法从字符 串中搜索传入的字符串,并返回位置(如果没找到,则返回-1)。两者的区别在于,indexOf()方法 从字符串开头开始查找子字符串,而 lastIndexOf()方法从字符串末尾开始查找子字符串。来看下面 的例子:

let stringValue = "hello world"; 
console.log(stringValue.indexOf("o")); // 4 
console.log(stringValue.lastIndexOf("o")); // 7

这里,字符串中第一个"o"的位置是 4,即"hello"中的"o"。最后一个"o"的位置是 7,即"world" 中的"o"。如果字符串中只有一个"o",则 indexOf()和 lastIndexOf()返回同一个位置。 这两个方法都可以接收可选的第二个参数,表示开始搜索的位置。这意味着,indexOf()会从这个 参数指定的位置开始向字符串末尾搜索,忽略该位置之前的字符;lastIndexOf()则会从这个参数指 定的位置开始向字符串开头搜索,忽略该位置之后直到字符串末尾的字符。下面看一个例子

let stringValue = "hello world"; 
console.log(stringValue.indexOf("o", 6)); // 7 
console.log(stringValue.lastIndexOf("o", 6)); // 4 

在传入第二个参数 6 以后,结果跟前面的例子恰好相反。这一次,indexOf()返回 7,因为它从位 置 6(字符"w")开始向后搜索字符串,在位置 7 找到了"o"。而 lastIndexOf()返回 4,因为它从位 置 6 开始反向搜索至字符串开头,因此找到了"hello"中的"o"。像这样使用第二个参数并循环调用 indexOf()或 lastIndexOf(),就可以在字符串中找到所有的目标子字符串,如下所示:

let stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; 
let positions = new Array(); 
let pos = stringValue.indexOf("e"); //查找字符串的第一个e对应的下标
while(pos > -1) { 
 positions.push(pos); //把对应的下标追加到数组里面
 pos = stringValue.indexOf("e", pos + 1); //从找到的第一个o的下标位置后面继续查找
} 
console.log(positions); // [3,24,32,35,52] 

这个例子逐步增大开始搜索的位置,通过 indexOf()遍历了整个字符串。首先取得第一个"e"的位 置,然后进入循环,将上一次的位置加 1 再传给 indexOf(),确保搜索到最后一个子字符串实例之后。 每个位置都保存在 positions 数组中。

5、判断字符串中是否包含另一个字符串的方法startsWith()、 endsWith()和 includes(),返回的结果都为布尔值。

startsWith() 方法用来判断当前字符串是否以另外一个给定的子字符串开头

endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的

includes() 方法用于判断一个字符串是否包含在另一个字符串中

endsWith()方法接收可选的第二个参数,表示应该当作字符串末尾的位置。如果不提供这个参数, 那么默认就是字符串长度。

startsWith()和 includes()方法接收可选的第二个参数,表示开始搜索的位置。如果传入第二 个参数,则意味着这两个方法会从指定位置向着字符串末尾搜索,忽略该位置之前的所有字符。

6、trim()方法

返回的结果是删除前、 后所有空格符。原字符串不受影响。

trimLeft()和 trimRight()方法分别用于从字符串开始和末尾清理空格符

7、toUpperCase() 方法可以将字符串转换为大写

toLowerCase() 方法可以将字符串转换为小写

它们对非字母字符不会产生影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值