JavaScript 字符串类型

摘要:在本教程中,您将了解 JavaScript String 类型以及如何有效地操作字符串。

JavaScript 字符串类型的介绍

String 类型是 对象字符串原始类型 的包装,可以通过使用 String 构造函数创建,如下所示

let str = new String('JavaScript String Type');Code language: JavaScript (javascript)

String 类型有一个名为 length 的属性,它指定字符串中的字符数。

console.log(str.length); // 22Code language: JavaScript (javascript)

在此示例中,length 属性的值为 22,这也与字符串 'JavaScript String Type' 中的字符数相同。

要获取原始字符串值,可以使用 String 对象的以下方法之一:valueOf()toString()toLocaleString()

console.log(str.valueOf());
console.log(str.toString());
console.log(str.toLocaleString());Code language: CSS (css)

要访问字符串中的单个字符,可以使用带数值索引的方括号表示法 []。第一个字符的索引为零,如本示例所示

console.log(str[0]); // JCode language: JavaScript (javascript)

方括号表示法是在 ES5 中引入的。在 ES5 之前,使用 charAt() 方法,该方法比较冗长

console.log(str.charAt(0)); // JCode language: JavaScript (javascript)

当您在原始字符串变量或文字字符串上调用方法时,它将转换为 String 类型的实例。例如

'literal string'.toUpperCase();Code language: JavaScript (javascript)

此功能称为 JavaScript 中的原始包装类型

字符串操作

String 类型提供了许多有用的方法,可以有效地操作字符串。我们将在下一节中逐一检查它们。

1) 连接字符串

要连接两个或多个字符串,请使用 concat() 方法,如下所示

let firstName = 'John';
let fullName = firstName.concat(' ','Doe');
console.log(fullName); // "John Doe"
console.log(firstName); // "John"Code language: JavaScript (javascript)

concat() 方法连接两个或多个字符串并返回结果字符串。请注意,concat() 方法不会修改原始字符串。

除了 concat() 方法外,还可以使用加号运算符 (+) 连接字符串。在实践中,加号运算符比 concat() 方法更常用。

let firstName = 'John';
let fullName = firstName + ' ' + 'Doe';
console.log(fullName); // "John Doe"Code language: JavaScript (javascript)

2) 提取子字符串

要从字符串中提取子字符串,请使用 substr() 方法

substr(startIndex,[length]);Code language: CSS (css)

substr() 方法接受两个参数。

第一个参数 startIndex 是提取字符的起始位置,而第二个参数 length 指定要提取的字符数。

let str = "JavaScript String";

console.log(str.substr(0, 10)); // "JavaScript"
console.log(str.substr(11,6)); // "String"Code language: JavaScript (javascript)

如果省略 length 参数,substr() 方法将提取到字符串末尾的字符。

有时,您想使用起始和结束索引从字符串中提取子字符串。在这种情况下,可以使用 substring() 方法

substring(startIndex,endIndex)

请参见以下示例

let str = "JavaScript String";
console.log(str.substring(4, 10)); // "Script"Code language: JavaScript (javascript)

3) 定位子字符串

要定位字符串中的子字符串,请使用 indexOf() 方法

string.indexOf(substring,[fromIndex]);Code language: CSS (css)

indexOf() 方法接受两个参数:要定位的子字符串和方法开始在字符串中向前搜索的 fromIndex

indexOf() 返回字符串中子字符串第一次出现的索引。如果未找到子字符串,则 indexOf() 方法返回 -1

let str = "This is a string";
console.log(str.indexOf("is")); // 2Code language: JavaScript (javascript)

以下示例使用 fromIndex 参数

console.log(str.indexOf('is', 3)); //5Code language: JavaScript (javascript)

要查找字符串中子字符串最后一次出现的定位,请使用 lastIndexOf() 方法。

string.lastIndexOf(substring,[fromIndex])Code language: CSS (css)

indexOf() 方法不同,lastindexOf() 方法从 fromIndex 参数向后搜索。

console.log(str.lastIndexOf('is')); // 5Code language: JavaScript (javascript)

如果在字符串中未找到子字符串,则 lastIndexOf() 方法也返回 -1,如本示例所示

console.log(str.lastIndexOf('are')); // -1Code language: JavaScript (javascript)

4) 删除空白字符

要删除字符串中所有前导和尾随空白字符,请使用 trim() 方法。

let rawString = ' Hi  ';
let strippedString = rawString.trim();
console.log(strippedString); // "Hi"Code language: JavaScript (javascript)

请注意,trim() 方法会创建一个原始字符串的副本,其中空白字符已去除,它不会更改原始字符串。

ES6 引入了两种新方法,用于从字符串中删除空白字符

  • trimStart() 返回一个字符串,其中已从字符串开头删除了空白字符。
  • trimEnd() 返回一个字符串,其中已从字符串末尾删除了空白字符。

5) 更改大小写

要更改字符串的大小写,请使用 toLowerCase()toUpperCase() 方法

let greeting = 'Hello';
console.log(greeting.toLowerCase()); // 'hello'
console.log(greeting.toUpperCase()); // 'HELLO';Code language: JavaScript (javascript)

在某些语言中,将字符串转换为小写和大写的规则非常具体。

因此,最好使用 toLocaleLowerCase()toLocaleUpperCase() 方法,尤其是在您不知道代码将处理哪种语言时。

6) 比较字符串

要比较两个字符串,请使用 localeCompare() 方法

first.localeCompare(second);Code language: CSS (css)

localeCompare() 返回三个值之一:-1、0 和 1。

  • 如果第一个字符串在字母顺序上位于第二个字符串之前,则该方法返回 -1。
  • 如果第一个字符串在字母顺序上位于第二个字符串之后,则该方法返回 1。
  • 如果两个字符串相等,则该方法返回 0。

例如

console.log('A'.localeCompare('B')); // -1
console.log('B'.localeCompare('B')); // 0
console.log('C'.localeCompare('B')); // 1Code language: JavaScript (javascript)

7) 匹配模式

match() 方法允许您将字符串与指定的 正则表达式 匹配并获取结果数组。

如果 match() 方法未找到任何匹配项,则返回 null。否则,它将返回一个数组,其中包含整个匹配项和任何括号捕获的匹配结果。

如果未设置全局标志 (g),则数组的元素零包含整个匹配项。以下是一个示例

let expression = '1 + 2 = 3';
let matches = expression.match(/\d+/);
console.log(matches[0]); // "1"Code language: JavaScript (javascript)

输出

1

在此示例中,模式与 expression 字符串中的任何数字匹配。

如果设置了全局标志 (g),则结果数组的元素将包含所有匹配项,如下所示

let expression = '1 + 2 = 3';
let matches = expression.match(/\d+/g);

for (const match of matches) {
  console.log(match);
}Code language: JavaScript (javascript)

输出

1
2
3

在此示例中,matches 数组包含所有匹配项,包括 expression 字符串中的 123

如果只需要找出字符串是否与正则表达式匹配,可以使用 search() 方法。

match() 方法类似,search() 方法接受一个正则表达式并返回找到第一个匹配项的字符串位置。如果没有找到匹配项,则返回 -1。

let str = "This is a test of search()";
let pos = str.search(/is/);
console.log(pos); // 2Code language: JavaScript (javascript)

8) 替换子字符串

要替换字符串中的子字符串,请使用 replace() 方法。

string.replace(regularExpression, replaceText)Code language: CSS (css)

replace() 方法的第一个参数可以是正则表达式或字符串。如果是正则表达式,则 replace() 方法将找到匹配项并将其替换为第二个参数 (replaceText)。如果是字符串,则 replace() 方法将执行精确搜索并执行替换。

replace() 方法在进行替换后返回原始字符串的副本。

以下示例说明了如何使用 正则表达式the 替换为 a

let str = "the baby kicks the ball";

// replace "the" with "a"
let newStr = str.replace(/the/g, "a");

console.log(newStr); // "a baby kicks a ball"
console.log(str); // "the baby kicks the ball"Code language: JavaScript (javascript)

以下示例显示了如何使用第一个参数作为文字字符串将 kicks 替换为 holds

newStr = str.replace('kicks', 'holds');
console.log(newStr); // "the baby holds the ball"Code language: JavaScript (javascript)

在本教程中,您已经了解了 JavaScript 字符串类型以及如何有效地操作字符串。

本教程是否有用?