在上一小节中,我们已经学习了什么是对象,以及对象常用的属性和方法。
实际上,前面我们所学习过的基本数据类型中,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
Comments