字符串
JavaScript 字符串用于存储和操作文本。
定义
JavaScript 字符串是引号中的零个或多个字符。
var carname = "Porsche 911";
var carname = 'Porsche 911';
字符串处理方法
length
内建属性 length
可返回字符串的长度:
charAt(index)
- 根据索引(index:number)获取字符串的字符
- index为负数则为倒数第index个字符
charCodeAt(index)
charCodeAt()
方法返回字符串中指定索引的字符 unicode 编码:- index为负数则为倒数第index个字符
样例1
let str = "hello world";
//获取字符串长度
let len = str.length;
//获取字符串上某个字符
let index = 6;
let char = str.charAt(index);
//获取字符串上某个字符的Unicode编码
let charUnicode = str.charCodeAt(index);
indexOf(【String,number】)
- 返回字符串中指定文本首次出现的索引(位置):
- 如果未找到文本,
indexOf()
返回 -1。 - 第二个参数,为检索的起始位置。
lastindexOf(【String,number】)
- 方法返回指定文本在字符串中最后一次出现的索引:
- 如果未找到文本
lastIndexOf()
返回 -1。 - 第二个参数为检索的起始位置。
search(String)
search()
方法搜索特定值的字符串,并返回匹配的位置:
search和indexOf区别
- search() 方法无法设置第二个开始位置参数。(支持正则表达式)
- indexOf() 方法无法设置更强大的搜索值(不支持正则表达式)。
match(regexp)
- match() 方法根据正则表达式在字符串中搜索匹配项,并将匹配项作为 Array 对象返回。
- 如果正则表达式不包含 g 修饰符(执行全局搜索),match() 方法将只返回字符串中的第一个匹配项。
includes(【String|number】)
- 如果字符串包含指定值,
includes()
方法返回 true。 - 不包含则返回FALSE
- 第二个参数为可选,代表起始的位置
startsWith(String|number)
- 如果字符串以指定值开头,则
startsWith()
方法返回true
,否则返回false
: - 第二个参数为可选,代表起始的位置
endsWith(String)
- 如果字符串以指定值结尾,则
endsWith()
方法返回true
,否则返回false
: - 第二个参数为可选,代表搜索的长度
样例2
//获取子串首次出现第一个字母的索引
let indexStr = str.indexOf("ld");
let fail = str.indexOf("xx");
//获取子串最后一次出现所在的索引
let lastIndex = str.lastIndexOf("l");
lastIndex = str.lastIndexOf("l", 5);
let str = "i am a student from jiang nan university.";
let flag = str.includes("student");
flag = str.includes("student", 15);
flag = str.startsWith("i");
flag = str.startsWith("i", 2);
flag = str.endsWith(".");
flag = str.endsWith(".", 5);
slice(【number,number】)
slice()
提取字符串的某个部分并在新字符串中返回被提取的部分。- 该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
- 如果省略第二个参数,则该方法将裁剪字符串的剩余部分:【number,end】
- 如果输入的是负数则变为倒数第number开始
substring(【number,number】)
substring()
提取字符串的某个部分并在新字符串中返回被提取的部分。- 该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
- 如果省略第二个参数,则该方法将裁剪字符串的剩余部分:【number,end】
- 参数不能设置为负数,只能从前往后搜索
substr(【number,number】) (被砍掉了)
substring()
提取字符串的某个部分并在新字符串中返回被提取的部分- 设置两个参数:起始参数(开始位置),长度
- 如果省略第二个参数,则该方法将裁剪字符串的剩余部分:【number,end】
- 如果首个参数为负,则从字符串的结尾计算位置。
样例
//划分子串
//根据区间划分
substr = str.slice(1, 5);
substr = str.slice(5);
//负数的话也是需要小到大
substr = str.slice(-5, -1);
//根据长度划分
substr = str.substring(5);
substr = str.substring(1, 3);
replace(String,String)
replace()
方法用另一个值替换在字符串中指定的值:replace()
方法不会改变调用它的字符串。它返回的是新字符串。replace()
只替换首个匹配(只替换一次):replace()
对大小写敏感(只能匹配完全一样的)。- 如需执行大小写不敏感的替换,请使用正则表达式
/i
(大小写不敏感) - 请注意正则表达式不带引号。
- 如需替换所有匹配,请使用正则表达式的
g
标志(用于全局搜索):
样例3
//字符串替换
let newStr = str.replace("world", "china");
//只替换一次
newStr = str.replace("o", "x");
//替换所有(默认区分大小写)
newStr = str.replace(/l/g, "x");
//不区分大小写替换
newStr = str.replace(/l/gi, "x");
toUpperCase(String)
toUpperCase()
把字符串转换为大写:
toLowerCase(String)
toLowerCase()
把字符串转换为小写:
concat(String…)
concat()
连接两个或多个字符串:concat()
方法可用于代替加运算符
String.trim(String)
trim()
方法删除字符串两端的空白符:- 返回一个新的字符串,不是原来的字符串
- Internet Explorer 8 或更低版本不支持
trim()
方法。 - 如需支持 IE 8,您可搭配正则表达式使用
replace()
方法代替:
split(String)
split()
将字符串转换为数组:- 如果省略分隔符,被返回的数组将包含 index [0] 中的整个字符串。
- 如果分隔符是 “”,被返回的数组将是间隔单个字符的数组:
//字符串大小写转换
console.log(str.toUpperCase());
console.log(str.toLowerCase());
//字符串连接
let conStr = str.concat(newStr, substr);
//去除字符串前后空格
str = " I am a student from jiang nan university ";
console.log(str);
str = str.trim();
//字符串转字符串数组
let arrayList = str.split(" ");
特殊字符
使用转义字符\来转义特殊字符
代码 | 结果 | 描述 |
---|---|---|
’ | ’ | 单引号 |
" | " | 双引号 |
\ | \ | 反斜杠 |
var x = "中国是瓷器的故乡,因此 china 与\"China(中国)\"同名。"
JavaScript 字符串模板
Back-Tics 语法
模板字面量使用反引号 (``) 而不是引号 (“”) 来定义字符串:
字符串内的引号
通过使用模板字面量,您可以在字符串中同时使用单引号和双引号:
多行字符串
模板字面量允许多行字符串:
插值
- 模板字面量提供了一种将变量和表达式插入字符串的简单方法。
- ${插入表达式或者变量}
- 用真实值自动替换变量称为字符串插值。
- 模板字面量允许字符串中的表达式:
实例
//模板字符串
let str = `hello world`;
str += `' i am a boy.'`;
//拼接表达式
str = str + `${1 + 3 + ((5 * 7) / 5) * 2}`;
//拼接变量
let x = "congradulation for you";
str += `${x}`;