字符串
-
字符串的特点
ECMAScitpt中的字符串是不可变的,字符串一旦创建,他的只就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
-
转换为字符串
-
toString( ) 数值、布尔值、对象和字符串值都有一个toString方法。但null和undefined没有这个方法
var num = 10; console.log(num.toString()) //'10' console.log(num.toString(2)) //'1010' console.log(num.toString(8)) //'12' console.log(num.toString(10)) //'10' console.log(num.toString(16)) //'A'
-
String( ) 在不知道是否是null或者undefined时可以使用
- 如果值有toString方法,则调用该方法并且返回结果值
- 如果值是null,则返回‘null’
- 如果值是undefined,则返回‘undefined’
var value1 = 10; var value2 = true; var value3 = null; var value4 ; console.log(String(value1)); //'10' console.log(String(value2)); //'true' console.log(String(value3)); //'null' console.log(String(value4)); //'undefined'
-
-
创建字符串
-
字面量创建
str = ‘hello world’;
-
new关键字创建
str = new String('hello world');
-
-
length 每一个字符串都有一个length属性 表示字符串中包含多少字符
str = 'hello world'; console.log(str.length) //11
-
字符方法
-
连接数组时,先将数组转化为字符串
var str = 'hello '; console.log(str.concat('world')); //'hello world' console.log(str.concat('world','!')) //'hello world!' var str = '123';
console.log(str.concat([‘aaa’,‘bbb’])) //123aaa,bbb
console.log(‘123’ + [‘aaa’, ‘bbb’]); //123aaa,bbb
```
-
slice( 开始位置索引 ,结束位置索引可有可无 ) 支持负值(加上字符串长度)取值范围包左不包右
- 返回被截取的字符串 不改变原始字符串
- 负值与字符串长度相加即可
var str = 'hello world';
console.log(str.slice(3)) //‘lo world’
console.log(str.slice(3,7)) //‘lo w’
console.log(str.slice(-3)) //‘orld’
console.log(str.slice(3,-4)) //‘lo w’
- ##### substring( 开始位置索引 ,结束位置索引可有可无 ) subString会将所有的负值都转换成0
- 返回被截取的字符串 不改变原始字符串
```javascript
var str = 'hello world';
console.log(str.substring(3)) //'lo world'
console.log(str.substring(3,7)) //'lo w'
console.log(str.substring(-3)) //'hello world'
console.log(str.substring(3,-4)) //'' 空字符串
console.log(str.substring(4,2)) == console.log(str.substring(2,4))//'ll'
var str = ‘hello world’;
console.log(str.substr(3)) //‘lo world’
console.log(str.substr(3,7)) //‘lo worl’
console.log(str.substr(-3)) //‘lo world’
console.log(str.substr(3,-4)) //’’ 空字符串
```
-
indexOf( 字符串,开始位置 ) 和lastIndexOf( 字符串,开始位置 ) 第二个参数可以选填
- indexOf从左往右依次寻找,返回子字符串的位置,如果没有找到则返回-1
- lastIndexOf从右往左依次寻找,没有找到返回-1
- 仅仅返回第一次找到的子字符串的位置
var str = ‘hello world’;
console.log(str.indexOf(‘o’)) //4
console.log(str.lastIndexOf(‘o’)) //7
console.log(str.indexOf(‘o’,4)) //9
console.log(str.lastIndexOf(‘o’,4)) //3
- ##### trim( ) 删除前置和后缀的所有空格 ,返回删除之后的字符串 ,不改变原始数组
- trimLeft( ) trimStart() 删除前缀空格
- trimRight( ) trimEnd() 删除后缀空格
```javascript
var str = ' hello world ';
console.log(str.trim()) //'hello world'
consoloe.log(str.trimLeft()) //'hello world '
console.log(str.trimRight()) //' hello world'
var str = ‘Hello World’;
console.log(str.toUpperCase()) //‘HELLO WORLD’
console.log(str.toLowerCase()) //‘hello world’
```
var text = ‘cat, bat, sat, fat’;
var pos = text.search(/at/);
console.log(pos) //1
- ##### replace( 字符串或者正则表达式,字符串或者函数)
- 替换字符串,返回替换好的新字符串
- 不改变原始字符串
```javascript
var str = 'cat, bat, sat, fat';
var res1 = str.replace('at','ond');
console.log(res1); // 'cond, bat, sat, fat'
var res2 = str.replace(/at/g,'ond');
console.log(res2); //'cond, bond, sond, fond'
```
- ##### split( 字符串或RegExp对象,指定数组大小 )
- 可以基于指定分隔符将一个字符串分割成多个字符串,并将结果存放到一个数组中
- 指定数组大小以便确保返回的数组不会超过既定大小
- 不改变原始字符串
```javascript
var str = 'red,blue,green,yellow';
var color1 = str.split(',');
console.log(color1); //['red','blue','green','yellow']
var color2 = str.split(',', 2);
console.log(color2); //['red','blue']
```
- ##### includes( 字符串 ,起始位置) 判断是否有该字符 没有起始位置 默认总开头
```javascript
var str = 'red,blue,green,yellow';
var res = str.includes('l',5)
console.log(res) //17
```
- ##### padStart( 目标长度 ,字符串) 补齐字符串 把字符串补充到某种长度 返回补充好的字符串
- ##### padEnd( 目标长度 ,字符串 )
```javascript
var str = '1234'
var res = str.padStart(3, 'a')
console.log(res) //1234
var res = str.padStart(10,'a')//aaaaaa1234
```
- ##### match( 要查找的字符 ) 正则表达式专用查找方法
```javascript
var str = 'abcdefg';
console.log(str.match('a'))
//["a", index: 0, input: "abcdefg", groups: undefined]
0: "a"
groups: undefined
index: 0
input: "abcdefg"
length: 1
__proto__: Array(0)
```