关于字符串

 

一:字符串的属性

数组是一个容器,字符串也是一个容器 length属性 计算字符串的长度 一个字符为1个位置

var str = '123'
console.log(str.length)  //长度为3
//也可以通过下标获取对应的字符,下标也是从0开始到length-1结束
console.log(str[0])
​
//数组是可变的 字符串是不可变的
//数组的length属性是可以修改的,字符串的length只能获取不能修改
str.length = 10 //错误的,无法设置
console.log(str.length) //打印的值还是3
​
//字符串的增删改查方法,不能操作原本的字符串,只能返回一个新的字符串
var a = 'hello' //不是将hello变成world了,而是将hello先销毁,再用world赋值给a这个变量
a = 'world'
var b = 'hello'
console.log(b)
​
//字符串不能改,因为他是常量 (常量就是不能修改的量)/只读变量
//不能通过length改变字符串的长度
//不能通过下标赋值来改变字符串
b[1] = 0 //h0llo 不能通过下标赋值来更改字符串
console.log(b) //hello

注意: ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变.

如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量.

二:字符串的方法(函数)

字符串是一个容器,所以对应的存在增删改查的方法 但是由于字符串是只读,增删改的方法是不会修改原本的字符串,而是返回一个新的字符串

//通过下标查询对应的字符,相当于字符串的下标获取
var str = 'abc'
console.log(str[0]) //获取a

1.charAt() 通过charAt方法来获取,返回的是字符串,根据下标来获取字符串

console.log(str.charAt(0))  //str.charAt(0) 等同于str[0]

2.charCodeAt() 获取ascii码,获取对应下标位置的字符的ascii码

console.log(str.charCodeAt(0))  //97 获取下标为0位置的字符a的ascii码
console.log(str.charCodeAt(1))  //98 获取下标为1位置的字符b的ascii码

3.String.fromCharCode() ASCII编码转换成字符,100的字符为d。该方法是String的静态方法,所以用String调用。 静态方法,利用内置对象,对应的方法,这个方法为内置的静态方法(Math.pow也是静态方法)

//fromCharCode 根据ascii码转换为对应的字符串,ascii码解码为字符串
var codeStr = String.fromCharCode(100)
console.log(codeStr)    //d

4.indexOf 查找字符串第一次出现的位置, 如果没找到则返回-1

var str = 'abc'
console.log(str.indexOf('a'))   //0
console.log(str.indexOf('a',1)) //-1
var str1 = 'abca'
console.log(str1.indexOf('a'))  //0
console.log(str1.indexOf('a',1)) //3

5.lastIndexOf() 查找字符串最后一次出现的位置, 如果没找到则返回-1,从后往前找

console.log(str1.lastIndexOf('a'))  //3
console.log(str1.lastIndexOf('a',1))  //0

//查询方法

6.search() 正则匹配 (返回第一次出现的位置),查询方法,返回第一个匹配的位置,返回的为当前找到的下标,如果找不到返回-1

var str = 'cbacbaabcabc'
var n = str.search('abc') 
console.log(n); //返回的值为6
var n = str.search('ddd') 
console.log(n); //找不到返回-1
//传入为string类型的时候 根据你传入的参数进行对比 返回第一次对比成功的下标 如果没有返回-1
​
​
//RegExp 正则对象 一般以俩个 //包起来
var reg = /abc/ //正则对象 
console.log(str.search(reg));//返回的为6
​
​
// 什么是正则表达式 正则表达式是一个用于匹配的表达式 他可以用来匹配任意的字符串
// RegExp为正则对象 一般的正则表达式以// 包起来 里面书写就是对应匹配的正则表达式
// /abc/ 匹配 abc的正则
//正则表达式的常用内容
 // ^表示开头 $符号表示结束
var reg = /^abc$/
var str = 'cbacbaabcabc'
console.log(str.search(reg));//查找正则匹配的abc出现第一次出现的位置 -1(必须是a开头c结尾,包一个b在中间)
var str = 'abc'
console.log(str.search(reg));//返回0
​
​
 // []表示元素其中一个 {}表示个数
var str = 'abcefg'
var rex = /[df]/  //[df]表示df中的其中一个(有d或者有f就可以)
console.log(str.search(rex) );//4
​
var str = "abcdef"
var rex = /[ab]{2}/ //表示个数为俩个 可以是a也可以b 匹配的ab aa bb ba
console.log(str.search(rex));//0
​
var str = "abcdef"
var rex = /[ac]{2}/ //表示个数为俩个 可以是a也可以是c 
console.log(str.search(rex));//search搜索的内容必须要连在一起 确保返回的下标是一个
​
var str =  "acbccd"
var reg = /[ac]{2}/ //匹配的是aa 或 ac 或 cc 都可以 ca 
console.log(str.search(reg)); //0 
​
//+ 表示一个或者多个
var str = 'bbaacca'
var rex = /[a]+/ //匹配 a aa aaa aaaa....
console.log(str.search(rex)); //2
​
// 在[]内可以用-表示区间但是必须是正的区间
var rex = /[A-Z]/ //匹配的是A B C D ....Z 26个字母
var rex = /[0-9]/  //匹配的是0 1 2 3 4... 10个数值
var rex = /[a-zA-Z1-9]/ //匹配的就是大写的字母小写字母以及1-9的数字
var rex = /[A-z]/  //正区间 大写字母 小写字母 以ascii码
​
// \w表示字母数字及下划线 \W相反 除了字母数字及下划线其他都匹配
var rex = /\w/ //匹配字母数字及下划线
var str = '_123456A'
console.log(str.search(rex)); //0
​
// \s 空白字符 \S 非空白字符

注: g表示进行全局匹配,i表示匹配的时候忽略大小写

7.replace() 替换字符串。替换匹配的值,变成另外一个值,返回一个新的字符串

var str = 'ababababa'
var newStr = str.replace('a','c') //将a替换为c 这里只能运行一次 他只会找到第一个a 将a替换为c
//replace只会找到第一个匹配的 将他替换为指定的字符串
console.log(newStr);    //cbabababa
//这里的替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则应使用正则表达式: 
​
//将所有的a替换为c
// 循环遍历 indexOf 找到第一个下标 如果没有找到就返回-1
for(var i=0;i<str.length;i++){
    if(str.indexOf('a')!=-1){//里面有a
       str =  str.replace('a','c') //进行替换将替换的完的数据设置给对应的字符串
    }else{//里面没有a 就退出
       break 
    }
}
console.log(str);
//replace也同样支持正则
//参数1为对应的搜索条件(支持string 或者 正则) 参数2为替换的内容
//replace 在 search 的基础上做替换

8.substring(start,end) 截取方法 返回新的字符串。截取字符串 范围是[start, end)。 注: 如果只有一个参数, 则表示到字符串最后

var str = 'abcdefg'
var newStr = str.substring(1,3) //开始位置下标 截取到结束位置下标 不包含结束位置
console.log(newStr); //bc

9.split(separator, howmany) 根据分隔符、拆分成数组。分割方法,分割为数组,数组的join连接成字符串 注:如果空字符串(“”)用作separator, 那么stringObject中的每个字符之间都会被分割

separator(字符串或正则表达式) howmany(可以指定返回的数组的最大长度, 可以省略)

var str = 'a,b,cd,e' 
//可以根据正则截取 返回值为string类型数组
var strArr = str.split(',') //根据,来进行分割
console.log(strArr);
var strArr = str.split(',',2) //limit表示数量  
//不写表示所有的全部填入数组 写上去就是填入指定个数的元素到数组(从前往后填入)
console.log(strArr);

10.str.toLowerCase(); 把字符串转换成小写 str.toUpperCase(); 把字符串转换成大写

 //转大写 转小写 全部转换 
var str = 'ABccddEF'
var str1 = str.toLowerCase()
console.log(str1); //转小写 
var str2 = str.toUpperCase()
console.log(str2); //转大写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值