字符串
一、概念
字符串就是零个或多个排在一起的任何字符,放在单引号或双引号之中。
var str1= "123";
var str2= '123';
注:引号嵌套:
- 单引和双引之间只能互相嵌套;
- 反引中可以嵌套双引也可嵌套双引。
<script>
var str1 = "我们的网址是'http://www.baidu.com'";
var str2 = '我们的网址是"http://www.baidu.com"';
var str3 = `文字'链接'为我们的网址:"http://www.baidu.com"`;
console.log(str1);//我们的网址是'http://www.baidu.com'
console.log(str2);//我们的网址是"http://www.baidu.com"
console.log(str3);//文字'链接'为我们的网址:"http://www.baidu.com"
</script>
二、语法
(一) 字符串默认只能写在一行内,分成多行将会报错。
'a
b
c'
// SyntaxError: Unexpected token ILLEGAL
(二) 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
var longString = "Long \
long \
long \
string";
longString
// "Long long long string"
拓展:
反斜杠:在字符串内有特殊含义,用来转义一些特殊字符。【如果字符串的常规内容之中,需要展示反斜杠,那么在反斜杠前再加一个反斜杠,用来对自身进行转义。】
var path = "C:\\games\\war3\\";
console.log(path); //C:\games\war3\
(三) 模板字符串(template string) ES6扩展
模板字符串是增强版的字符串,用 反引号(`) 标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
1.普通字符串使用
var str = `你好,这里是AIU哎呀的博客`;
2.多行字符串
使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
var str = `
你好
这里是AIU哎呀的博客
欢迎评价
渴望建议
`;
效果图:
3. 嵌入变量使用
模板字符串中嵌入变量,需要将变量名写在${}之中。
var name = 'AIU哎呀'
var job= '前端'
var str = `您好, 这里是${name},${job},欢迎您的到来`;
//"你好, 这里是AIU哎呀,前端,欢迎您的到来"
注: 花括号内部允许任意的JS表达式,允许进行运算,允许引用对象属性,允许调用函数。
e.g.
var x = 1;
var y = 2;
var obj = {x: 1, y: 2};
function fn() {
return "Hello World";
}
console.log(`${x} + ${y} = ${x + y}`); //1 + 2 = 3
console.log(`${x} + ${y * 2} = ${x + y * 2}`); //1 + 4 = 5
console.log(`${obj.x + obj.y}`); //3
console.log(`foo ${fn()} bar`); // foo Hello World bar
三、常见方法
1. 长度计算,连接
- length:用于返回字符串中的字符数
- charAt(index) 方法: 用于返回指定索引处的字符。索引范围(index): 0 ~ length() - 1。【若超出索引范围,不报错,不输出】
- charCodeAt(index) 方法: 用于返回指定位置的字符的 Unicode 编码。【如果 参数 index 是负数,或大于等于字符串的长度,则返回 NaN。】
var str = "hello";
var str2 = " world";
console.log( str.length ); //5
console.log( str[0] ); //h
console.log( str[str.length - 1] ); //o
console.log( str.charAt(0) ); //h
console.log( str.charCodeAt(0) ); //104
var str3 = str + str2;
console.log( str3 ); //hello world
2. 字符串截取
(1) substr(start,length):
用于返回字符串中的字符数
string.substr(start,length); //(参数[数值]:开始位置[必填]和长度[选填])
注:如果省略了参数长度,那么返回从开始位置到结尾的字符串。重要事项:ECMAscript 没有对该方法进行标准化,因此反对使用它。
(2) substring(from, to):
用于提取字符串中介于两个指定下标之间的字符。【包括开始处的字符,但不包括结束处的字符。】
var str="Hello world!";
console.log(str.substring(3)); //lo world!
console.log(str.substring(3,7)); //lo w
注:如果省略了参数to,那么返回从开始位置到结尾的字符串。
(3)slice(start, end):
提取字符串的某个部分,不改变原有字符串。
var str="Hello world!";
var str1 = str.slice(4);
var str2 = str.slice(4,10);
var str3 = str.slice();
console.log(str1); //o world! [从第 5 个字符开始截取到末尾]
console.log(str2); //o worl [从第 5 个字符开始截取到第10个字符]
console.log(str3); //Hello world!
console.log(str); //Hello world! [不改变原有字符串]
3. 查找
(1)查找 search(searchvalue):
用于检索字符串中指定的子字符串【如果没有找到任何匹配的子串,则返回 -1。】searchvalue参数,必填
(2)替换 replace(searchvalue,newvalue):
用于在字符串中用一些字符替换另一些字符
var str = "hello my world";
var s1 = str.search('my'); //6 找不到为-1
var s2 = str.replace('my', 'your'); // hello your world
4. 大小写转换
(1)大写 toUpperCase():
用于把字符串中所有字符转换为大写。
(2)小写 toLowerCase():
用于把字符串中所有字符转换为小写。
var str = "Hello";
console.log(str.toUpperCase()); //HELLO
console.log(str.toLowerCase()); //hello