03月09, 2019

JS基础(6)——对象(2)——字符串相关方法

在上一小节中,我们已经学习了什么是对象,以及对象常用的属性和方法。

实际上,前面我们所学习过的基本数据类型中,boolean、number 和 string 类型的数据都可以看作是一个个对象。既然是对象,那么肯定就有相应的属性和方法。这里大家可以仔细回忆一下,例如前面我们所学习过的toFixed(),如下:

let num = 10.456;
console.log(num.toFixed(2)); // 10.46

这里我们所使用到的toFixed()实际上就是 num 这个数字对象的一个方法。

由于 boolean 类型和 number 类型的对象,所涉及的属性和方法不多,所以掌握前面那些所介绍过的内容即可。

这里我们主要来看一看字符串对象的相关属性和方法。

6-2-1 字符串属性

在字符串里面有一个length属性,可以访问到该字符串里面有多少个字符:

console.log("Hello".length); // 5

6-2-2 字符串方法

访问特定字符

有两个访问字符串中特定字符的方法,分别是charAt()charCodeAt()

charAt()方法接收一个数字参数,找到对应该下标的字符是什么。

let str = "Hello World";
console.log(str.charAt(1)); // e
console.log(str.charAt('a')); // H 因为 a 被转为了数字0

charCodeAt()方法接收一个数字参数,找到对应该下标的字符编码是什么。

let str = "Hello World";
console.log(str.charCodeAt(1)); // 101
console.log(str.charCodeAt('a')); // 72

fromCharCode()这个方法基本上和charCodeAt()执行的是相反的操作。

console.log(String.fromCharCode(104,101,108,108,111)); // hello

字符串操作方法

concat()用于将一个或者多个字符串拼接起来,返回拼接得到的新字符串。

需要注意的就是原字符串不会产生改变,拼接后的字符串以返回值的方式返回。

let str = "Hello";
let newStr = str.concat(" World!!!");
console.log(str); // Hello
console.log(newStr); // Hello World!!!

还有一点,那就是虽然concat()可以用于拼接字符串,但是还是使用+运算符来拼接字符串的方式更加简便,使用的情况更多一些。

slice()和数组的slice()方法相似,接收一或者两个参数,截取字符串。

let str = "Hello World";
let str2 = str.slice(2);
let str3 = str.slice(2,7); // 不包括 7
console.log(str); // Hello World
console.log(str2); // llo World
console.log(str3); // llo W

substr()方法在字符串中抽取从开始下标开始的指定数目的字符,效果和slice()方法基本一样。但是还是有一定的区别,区别就在于第二个参数,如下:

let str = "Hello World";
let str1 = str.slice(2);
let str2 = str.substr(2);
console.log(str1); // llo World
console.log(str2); // llo World

str1 = str.slice(2,7); // 结束位置为 7,不包含 7
str2 = str.substr(2,7); // 要返回的字符个数
console.log(str1); // llo W
console.log(str2); // llo Wor

substring()方法用于提取字符串中介于两个指定下标之间的字符。和前面的方法也是非常的相似,但是还是有不同的地方,如下:

let str = "Hello World";
let str1 = str.slice(2);
let str2 = str.substr(2);
let str3 = str.substring(2);
console.log(str1); // llo World
console.log(str2); // llo World
console.log(str3); // llo World

str1 = str.slice(2,7); // 结束位置为 7,不包含 7
str2 = str.substr(2,7); // 要返回的字符个数
str3 = str.substring(2,7); // 结束位置为 7,不包含 7
console.log(str1); // llo W
console.log(str2); // llo Wor
console.log(str3); // llo W

在上面的示例中,传入 2 个参数的时候,好像substring()方法和slice()方法效果是一样的,那么区别在什么地方呢?

区别就在于参数为负数的时候,如下:

let str = "Hello World";
let str1 = str.slice(-3);
let str2 = str.substr(-3);
let str3 = str.substring(-3);
// slice 将所有的负值和字符串的长度相加
// substr 负的第一个参数和字符串长度相加 负的第二个参数转换为0
// substring 把所有的负值转换为0 substring()会将较小的数作为开始 较大的数作为结束
console.log(str1); // rld
console.log(str2); // rld
console.log(str3); // Hello World

str1 = str.slice(2,-3); // 等价于slice(2,8)
str2 = str.substr(2,-3); // 等价于substr(2,0)
str3 = str.substring(2,-3); // 等价于 substring(2,0) 等价于 substring(0,2)
console.log(str1); // llo Wo
console.log(str2); // 空
console.log(str3); // He

字符串位置方法

indexOf()lastIndexOf()这两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置,没有找到就是返回 -1,两个方法的区别在于一个是从前面开始找,一个是从后面开始找。

let str = "Hello World";
console.log(str.indexOf('l')); // 2
console.log(str.lastIndexOf('l')); // 9

字符串对象中还存在一个和indexOf()方法很类似的方法,为search()方法。该方法也是用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。

具体示例如下:

let str = "Visit Runoob!"; 
let n = str.search("Runoob");
console.log(n); // 6

除了传入子字符串,还可以传入一个正则表达式,如下:

let str = "Mr. Blue has a blue house";
console.log(str.search(/blue/i)); // 4

关于正则表达式,会在本章的第 6 小节进行介绍。

查看是否包含字符

includes()方法用于查看是否包含某个字符,如果包含返回 true,否则返回 false。

let str = "Hello World";
console.log(str.includes("l")); // true
console.log(str.includes("M")); // false

检测开始字符和结束字符

startsWith()endsWith()方法分别用于检测开始字符和结束字符。

let str = "Hello World";
console.log(str.startsWith("H")); // true
console.log(str.endsWith("d")); // true
console.log(str.endsWith("z")); // false

去除字符串空白方法

trim()方法用于去除字符串两端空白,这个方法在表单验证里面经常会使用。它会创建一个字符串副本,删除前置以及后缀的所有空格。

let str = "    Hello World    ";
let newStr = str.trim();
console.log(str); //    Hello World    
console.log(newStr); // Hello World

除了trim()以外,还有trimLeft()trimRight()方法,分别用于删除字符串开头和末尾的空格。

重复字符串

repeat()方法接收一个参数,为字符串重复的次数。返回值为字符串重复指定次数后的新字符串。

let str = "Hello";
console.log(str.repeat(3));
// HelloHelloHello

字符串大小写转换方法

有 4 个方法,toLowerCase()toLocaleLowerCase()toUpperCase()toLocaleUpperCase()

一般用得较多的就是toLowerCase()toUpperCase()

具体示例如下:

let str = "HELLO";
console.log(str.toLowerCase()); // hello
str = "hello";
console.log(str.toUpperCase()); // HELLO

本文链接:http://www.yanhongzhi.com/post/js-basis-18.html

-- EOF --

Comments