重拾前端记忆,记录学习笔记,现在进入JavaScript字符串部分
字符串即是零个或多个排在一起的字符,放在单引号或双引号之中,如下:
“我是一个字符串”
‘我是一个字符串’
单引号字符串的内部可以使用双引号;双引号字符串的内部可以使用单引号,如下:
“我是一个’字符串’”
‘我是一个“字符串”’
如果要在单引号字符串内部使用单引号,或者在双引号字符串中使用双引号,则需要在前面加上“\”,用于转义,如下:
“我是一个\“字符串\””
‘我是一个\‘字符串\’’
字符串默认只能在一行中,如果需要换行,则需要在第一行最后方加上“\”,用于转义,如下
“我是一个\
字符串”
该属性用于返回字符串的长度,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str = "我是一个字符串";
console.log("str的长度为:"+str.length);
script>
body>
html>
效果如下:
charAt()方法用于返回指定下标的字符,字符从左到右由0开始编号,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str = "我是一个字符串";
var num = 2;
console.log("str下标为"+num+"的字符为:"+str.charAt(num));
script>
body>
html>
结果如下:
可以看到,由于字符串下标是从左到右由0开始编号的,所以取到了第三个字符“一”
注意:如果下标超出了字符串所有下标编号,不管是向左超出还是向右超出,都会返回空字符串
concat()方法用于连接两个字符串,并且在不改变原字符串的基础下返回一个新的字符串,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个";
var str2 = "字符串";
var str3 = str1.concat(str2);
console.log("str1:"+str1);
console.log("str2:"+str2);
console.log("str2:"+str3);
script>
body>
html>
结果如下:
可支持多个字符串进行拼接,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个";
var str2 = "字符串";
var str3 = "字符串";
var str4 = str1.concat(str2 , str3);
console.log("str4:"+str4);
script>
body>
html>
结果如下:
简便的方法:可以使用“+”直接连接字符串,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个";
var str2 = "字符串";
var str3 = "字符串";
var str4 = str1+str2+str3
console.log("str4:"+str4);
script>
body>
html>
注意:如果使用“+”进行连接,并且相邻两个或多个值存在===数字时,会先将数字相加而后再拼接字符串,而不是直接拼接为字符串
substring()方法用于从原字符串截取出一个字符串并返回,不改变原字符串。
第一个参数表示开始截取字符串的下标,第二个位置表示结束位置(返回结果不含该位置)
示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substring(0,2));
script>
body>
html>
结果如下:
如果省略第二个参数,则从开始下标一直截取到字符串末尾,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substring(2));
script>
body>
html>
结果如下:
如果第一个参数值大于第二个参数,则会自动将两个参数调换位置,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substring(2,0));
//等同于
console.log(str1.substring(0,2));
script>
body>
html>
结果如下:
如果存在参数值为负数,则会自动将参数值改为0,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substring(2,-2));
//等同于
console.log(str1.substring(2,0));
//等同于
console.log(str1.substring(0,2));
script>
body>
html>
结果如下:
substr()方法也是从原字符串截取一个子字符串返回,只是参数值的意义不同
第一个参数表示开始截取的下标,第二个参数是截取的长度
示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substr(1,3));
script>
body>
html>
结果如下:
同样,如果省略第二个参数值,则从开始下标一直截取到字符串末尾,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substr(1));
script>
body>
html>
结果如下:
与substring()方法不同的是,如果第一个参数值为负数,则表示倒数计算的字符位置,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
//开始截取的位置为 从右往左第五个字符 截取长度为4
console.log(str1.substr(-5,4));
//开始截取的位置为 从右往左第五个字符 截取长度为:直到末尾
console.log(str1.substr(-5));
script>
body>
html>
结果如下:
如果第二个参数值为负数,则自动转为0,将返回空字符串,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
console.log(str1.substr(5,-1));
console.log(str1.substr(-5,-1));
script>
body>
html>
结果如下:
indexOf()方法用于确定一个字符串在另一个字符串中第一次出现的位置,如果不存在则返回-1,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
var str2 = "字";
console.log(str2+" 在 "+str1+" 中出现的下标为:"+str1.indexOf(str2));
script>
body>
html>
结果如下:
如果方法中存在第二个字符,则表示从该位置向后匹配,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是一个字符串";
var str2 = "是";
var num = 2;
if (str1.indexOf(str2 , num) != -1){
console.log("在下标"+num+"后:");
console.log(str2+" 在 "+str1+" 中出现的下标为:"+str1.indexOf(str2));
}else{
console.log("在下标"+num+"后:");
console.log(str1+" 中不存在字符:"+str2);
}
script>
body>
html>
结果如下:
trim()方法 用于在不影响原字符串的前提下,去除字符串两端的空格,返回一个新的字符串,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = " 我是一个字符串 ";
console.log(str1);
console.log(str1.trim());
script>
body>
html>
结果如下:
注意:该方法去除的不只是空格,还包括两端的制表符(‘\t’,‘\v’),换行符(‘\n’),以及回车符’\r’
示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "\r\n我是一个字符串\t";
console.log(str1);
console.log(str1.trim());
script>
body>
html>
结果如下,可以看到第一行中的换行、回车、制表符都被去除了:
在ES6中,新增了trimStart()和trimEnd()两个方法,分别为去除头部空格和去除尾部空格,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = " 我是一个字符串 ";
console.log(str1);
console.log(str1.trimStart());
console.log(str1.trimEnd());
script>
body>
html>
结果如下:
split()方法 用于按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是,一个,字符串";
var str2 = ",";
console.log(str1);
console.log(str1.split(str2));
script>
body>
html>
结果如下:
如果分割规则为空字符串,则返回数组中的成员是原字符串的每一个字符,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是,一个,字符串";
var str2 = "";
console.log(str1);
console.log(str1.split(str2));
script>
body>
html>
结果如下:
如果省略参数,则返回的数组只有一个成员,就是原字符串,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是,一个,字符串";
var str2 = "";
console.log(str1);
console.log(str1.split());
script>
body>
html>
结果如下:
如果指定了第二个参数,则第二个参数值意思为返回数组的最大成员数,示例如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清风不渡title>
head>
<body>
<script>
var str1 = "我是,一个,字符串";
var str2 = ",";
console.log(str1);
console.log(str1.split(str2,1));
console.log(str1.split(str2,2));
console.log(str1.split(str2,3));
script>
body>
html>
结果如下:
以上就是字符串及其常用方法说明