您的位置:首页 > 百科大全 |

全面了解JavaScript中的字符串

在JavaScript中,文本数据存储为字符串。单个字符没有单独的类型。无论页面使用什么,字符串的内部格式始终是UTF-16,JavaScript字符串的大小总是每个字符2个字节,可以通过用单引号或双引号或反引号将值括起来来创建任何字符串。

例子:

let single = 'single-quoted';let double = "double-quoted";let backticks = `backticks`;

这里的单引号和双引号是一样的。但是反引号通过将${}包裹起来帮助我们将表达式嵌入到字符串中

alert(`1 + 2 = ${1 + 2}.`); \\ 1 + 2 = 3.

反引号还允许您将文本跨越到多行,这与引号不同。

let studentsList = `Guests: * Indira * Suraj * Valli`;

标记模板:

反引号在另一方面也是一种祝福。您可以使用它们通过模板函数来格式化字符串。这是一个解释相同的例子

const person = "Kumar";const age = 19;function myTag(strings, personExp, ageExp) {  const str0 = strings[0]; // "That "  const str1 = strings[1]; // " is a "  const str2 = strings[2]; // "."  const ageStr = ageExp > 99 ? "centenarian" : "youngster";  // We can even return a string built using a template literal  return `${str0}${personExp}${str1}${ageStr}${str2}`;}const output = myTag`That ${person} is a ${age}.`;console.log(output);// That Kumar is a youngster.

在这里,myTag是处理字符串的标记模板,这里是“that”、“is a”、“.”。将作为字符串数组传递,然后表达式${person}传递给personExp,${age} 传递给ageExp。

转义序列:

这些是您要打印的字符,但由于它们具有特殊含义而被跳过。
以下是如何在JavaScript中对字符串进行一些格式化。

  • \n – 换行
  • \r – 回车,在 Windows 文本文件中,两个字符的组合 \r\n 代表一个新的中断,而在非 Windows 操作系统上它只是 \n。大多数 Windows 软件也能理解 \n。
  • \’, \“ – 引号
  • \ – 反斜杠
  • \t – 制表符
  • \b, \f, \v – 退格键、换页符、垂直制表符

例子:

alert( 'I\'m the Kumar!' ); // I'm the Kumar!

字符串长度:

length 属性具有字符串长度:

alert( 'My\n'.length ); // 3

笔记:

  • \n是一个“特殊”字符,所以长度确实是3
  • 在String中,长度只是一个属性,它不是一个可以在字符串上调用的函数。

访问字符

在JavaScript中,要获取位置pos的字符,请使用方括号[pos]或调用方法str.at(pos)。第一个字符从零位置开始。

let str = `Hello`;// the first characteralert( str[0] ); // Halert( str.at(-1) ); // o

像往常一样,最后一个字符的索引为-1等等。

属性和重要方法:

1) 字符串是不可
变的在JavaScript中不能更改字符串。改变一个角色是不可能的。
例子:

let str = 'Hi';str[0] = 'h'; // error

2) 改变大小写
方法toLowerCase()和toUpperCase()改变大小写:

alert( 'Kumar'.toUpperCase() ); // KUMARalert( 'Kumar'.toLowerCase() ); // kumar

3) 搜索子字符串:
可以使用 .indexOf() 函数来完成
let str = ‘Widget with id’;

alert( str.indexOf('Widget') ); // 0, because 'Widget' is found at the beginningalert( str.indexOf('widget') ); // -1, not found, the search is case-sensitive

4) 获取子字符串
JavaScript中有3种获取子字符串的方法:substring、substr和slice。

str.slice(start, end)
返回字符串从开始到(但不包括)结束的部分。

如果没有第二个参数,则切片一直到字符串的末尾:

let str = "stringify";alert( str.slice(0, 5) ); // 'strin', the substring from 0 to 5 (not including 5)alert( str.slice(2) ); // 'ringify', from the 2nd position till the end

str.substring(start, end)
返回开始和结束之间的字符串部分(不包括结束)。

这几乎与切片相同,但它允许开始大于结束(在这种情况下它只是交换开始和结束值)。

let str = "stringify";alert( str.substring(2, 6) ); // "ring"alert( str.substring(6, 2) ); // "ring"

str.substr(start [, length])
从 start 开始返回给定长度的字符串部分。

let str = "stringify";alert( str.substr(2, 4) ); 

比较字符串:

字符串按字母顺序逐个字符进行比较。但是当您比较字符串时,在JavaScript世界中会发生一些奇怪的事情。让我们在这里看看其中的一些。

  • 小写字母总是大于大写字母:
alert( 'a' > 'Z' ); // true
  • 带有变音符号的字母是“乱序的”:

alert( 'Österreich' > 'New zealand' ); // true
这里Ö有一个变音符号。所以它大于 N,即使 N 按字母顺序排在O之前。这是因为这些特殊字符的ASCII值较高。

这是比较字符串
的另一种方法。根据语言规则,调用str.localeCompare(str2) 返回一个整数,指示 str 是小于、等于还是大于str2:

  • 如果str小于str2,则返回负数。
  • 如果str大于str2,则返回正数。
  • 如果它们相等,则返回0。例如:
alert( 'Österreich'.localeCompare('Zealand') ); // -1

JavaScript源代码中的Unicode:

在JavaScript中,标识符和字符串文字可以通过Unicode转义序列以Unicode表示。一般语法为\uXXXX,其中X表示四个十六进制数字。例如,字母o在Unicode中表示为’\u006F’。

例子:

var f\u006F\u006F = 'abc';console.log(foo) //abc

String Concatenation:
我们怎么能结束一篇关于JavaScript的字符串文章而不谈论伟大的串联呢?

这是它的简要概述。concat() 方法连接两个或多个字符串。此方法不会更改现有字符串。它返回一个新字符串。
语法:
string.concat(string1, string2, …, stringX)

例子:

let text1 = "Hello";let text2 = "world!";let result = text1.concat(" ", text2);console.log(result)//Hello world!