在上一章中,我们学习了字符串的基础知识,下面让我们再前进一步,开始考虑可以对具有内置方法和属性的字符串进行一些有用的操作。
原始值(例如“New Delhi”)不能具有属性或方法(因为它们不是对象)。
但是在JavaScript中,方法和属性也可用于原始值,因为JavaScript在执行方法和属性时会将原始值视为对象。
查找字符串的长度
length属性返回字符串的长度。对于空字符串,长度为0。
var str = 'Java Script';
str.length;// return 11
注意:空格也算作字符:
concat()方法
concat()方法用于连接两个或多个字符串。
var a = 'NHOOO';
var b = 'COM';
var c = a.concat(b);
注意:所有字符串方法都返回一个新值。它们不会更改原始变量。
转换为大写或小写
toUpperCase()方法返回转换为大写形式的调用字符串值。
var str1 = "nhooo.com";
var str2 = str1.toUpperCase();
toLowerCase()方法返回转换为小写形式的调用字符串值。
var str1 = "nhooo.com";
var str2 = str1.toLowerCase();
在字符串中查找子字符串
indexOf()方法返回指定值在字符串中首次出现的位置(索引)。
var str = 'Air Pollution is introduction of chemicals to the atmosphere';
str.indexOf('Pollution');// 4
注意:第一个字符的索引为0,第二个字符的索引为1,依此类推。
lastIndexOf()方法返回字符串中最后一次出现指定值的位置(索引)。
var str = 'Hello world, I repeat Hello world';
str.lastIndexOf('Hello');// 22
indexOf()与lastIndexOf()返回-1如果值未找到:
var str = "nhooo.com";
str.indexOf("fish");
str.lastIndexOf("beer");
indexOf()与lastIndexOf()都接受第二个参数作为搜索的起始位置:
var str = 'HELLO WORLD HELLO';
str.indexOf('L', 6);
在字符串中搜索子字符串
search()方法执行搜索以查找正则表达式和字符串之间的匹配项。
如果找到匹配项,它将返回第一个匹配项的位置,如果找不到匹配项,则将返回-1:
var str = 'The question is to be, or not to be, that is to be.';
var pos = str.search('to be');
以下示例演示了带i标志的正则表达式的使用(忽略大小写):
var str = 'The question is TO BE, or not to be, that is to be.';
var pos = str.search(/to be/i);
在本教程的后面,您将学到更多关于正则表达式的信息。
将字符串转换为数组
split()方法将字符串拆分为子字符串数组,然后返回新数组。
我们将使用split()方法通过以表示的空格字符分隔数组" "。
var str = 'can you help me?';
var arr = str.split(" ");
现在我们在arr变量中有了一个新数组,我们可以使用索引号访问每个元素:
arr[0]; // Air
arr[2]; // is
在以下示例中,我们将使用“i”作为分隔符:
var str = 'can you help me?';
var arr = str.split("i");
如果将空字符串("")用作分隔符,则该字符串将转换为字符数组:
var str = 'can you help me?';
var arr = str.split("");
通过拆分字符串,您可以确定一个句子中有多少个单词。
删除字符串前后空白
trim()方法从字符串的两端删除空格,但不能去除字符串之间的空白,空格可以是制表符或空格。
var greeting = " Hello world! ";
greeting.trim();
此方法是执行删除多余空白,常见的简单方法。
替换字符串值
replace()方法返回一个新字符串,该字符串具有部分或全部模式匹配项,并由替换项替换。
第一个参数将是要找到的值,第二个参数将是要替换为的值。
var str1 = 'The question is to be, or not to be, that is to be.';
var str2 = str1.replace('to be', 'ZZZ');
默认情况下,replace()方法仅替换第一个匹配项。
要替换所有出现的内容,请使用带有g标志的正则表达式(全局搜索):
var str1 = 'The question is to be, or not to be, that is to be.';
var str2 = str1.replace(/to be/g, 'ZZZ');
要替换不区分大小写的代码,请使用带有i标志的正则表达式(忽略大小写):
var str1 = 'The question is TO BE, or not to be, that is to be.';
var str2 = str1.replace(/to be/gi, 'ZZZ');
在本教程的后面,您将学到更多关于正则表达式的信息。
提取部分字符串
有三种方法可以提取字符串的一部分:
-
slice(start, end)
-
substring(start, end)
-
substr(start, length)
slice()方法
slice()方法提取字符串的一部分,并将其作为新字符串返回,而无需修改原始字符串。
此方法有两个参数:开始索引(start)和结束索引(end)(不包括结束)。
本示例从索引3到索引9(10-1)提取字符串的一部分:
var str = 'Hello Javascript nhooo.com';
var ext = str.slice(3, 10);
注意:第一个字符的索引为0,第二个字符的索引为1,依此类推。
使用负索引从字符串末尾进行选择:
var str = 'Hello Javascript nhooo.com';
var ext = str.slice(-8, -3);
如果省略第二个参数,则此方法将切出字符串的其余部分:
var str = 'Hello Javascript nhooo.com';
var ext = str.slice(3);
下面的示例使用slice()仅提取最后一个字符:
var str = 'Hello Javascript nhooo.com';
var ext = str.slice(-1);
substring()方法
substring()方法类似于slice()方法。
区别在于substring()不能接受负索引值。
var str1 = 'can you help me?';
var str2 = str1.substring(4, 10);
如果省略第二个参数,则substring()method将提取字符串的其余部分:
var str1 = 'can you help me?';
var str2 = str1.substring(7);
substr()方法
substr()方法类似于slice()方法。
区别在于第二个参数指定了提取部分的长度。
以下示例用于substr()从索引4提取字符,长度为18:
var str1 = 'can you help me?';
var str2 = str1.substr(4, 18);
如果省略第二个参数,则substr()方法将提取字符串的其余部分:
var str1 = 'can you help me?';
var str2 = str1.substr(7);
要从字符串末尾提取字符,请使用负索引值:
var str1 = 'Hello Javascript nhooo.com';
var str2 = str1.substr(-6, 3); // tor
访问字符串字符
有三种访问字符串字符的方法:
-
charAt(index)
-
charCodeAt(index)
-
方括号表示法[]
charAt()方法
charAt()方法返回字符串中指定索引处的字符。
var str = 'Hello Javascript nhooo.com';
str.charAt(1);// 返回 a
下面的示例返回字符串的最后一个字符:
var str = 'Hello Javascript nhooo.com';
str.charAt(str.length-1);
charCodeAt()方法
charCodeAt()方法返回介于0和65535之间的整数,该整数表示给定索引处的UTF-16代码单元。
var str = 'Hello Javascript nhooo.com';
str.charCodeAt(1);// 返回 97
方括号表示法[]
您可以使用方括号表示法返回字符串中的任何字符[]。
在方括号内,包括要返回的字符的索引号。
var str = 'Hello Javascript nhooo.com';
str[0];// 返回 P
str[1];// 返回 a