在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!