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() 方法可以将字符串转换为小写
它们对非字母字符不会产生影响