js中关于字符串的一些细节知识

字符串:在js中由单引号或者双引号包起来的都是字符串,由零到多个字符组成。

   var str='zhufengpeixun';
   str.length  ->13 字符串长度
   str[0] ->"z" 取第一个字符
   str[str.length-1] ->"n" 取最后一个字符
   str[100] ->undefined
   字符串中每一个字符都有一个自己对应位置的索引,也有类似于数组一样的length代表自己的长度
   typeof str
   =>"string"
   new String(str)
   =>String {"zhufengpeixun"}0: "z"1: "h"2: "u"3: "f"4: "e"5: "n"6: "g"7: "p"8: "e"9: "i"10: "x"11: "u"12: "n"length: 13__proto__: String[[PrimitiveValue]]: "zhufengpeixun"
   **`列出字符串中的每一项`**
   
    for(var i=0;i<str.length;i++){
     console.log(str[i]);
}

例子:
=>var str='zhufengpeixun';
    for(var i=0;i<str.length;i++){
     console.log(str[i]);
}
VM519:3 z
VM519:3 h
VM519:3 u
VM519:3 f
VM519:3 e
VM519:3 n
VM519:3 g
VM519:3 p
VM519:3 e
VM519:3 i
VM519:3 x
VM519:3 u
VM519:3 n

关于字符串中常用的方法

字符串都是基本数据类型,字符串的每一次操作都是值直接进行操作,不像数组一样是基于空间地址来操作,所以不存在原有字符串是否改变,字符串肯定不变。

charAt/charCodeAt
作用:charAt根据索引获取指定位置的字符,charCodeAt不仅仅获取字符,他获取字符对应的Unicode编码值(ASC II码值)
参数:索引
返回值:字符对应的编码

var str='zhufengpeixun';
undefined
str.charAt(0)
"z"
str[0]
"z"
str[100] //[x]不存在这个索引时,返回undefined
undefined
str.charAt(100) //运行机制和对象是一样的,charAt(x)不存在这个索引时,返回空字符""
""
str.charCodeAt(0) //这个索引存在时,输出这个值的字符编码
122
str.charCodeAt(100) //运行机制和对象是一样的,charAt(x)不存在这个索引时,返回空字符NaN
NaN

indexOf/lastIndexOf
基于这两个方法。可以获取第一次或者最后一次出现位置索引,有这个字符,返回大于0的索引,不包含这个字符,返回结果是-1
基于这两个,验证字符串中是否包含某个字符。

var str='zhufengpeixun';
if(str.indexOf('*')>-1){
   //条件成立说明包含*符号
}

slice
作用:str . slice( n , m) 从索引n开始找到索引为m处(不包含m),把找到的字符当做新字符串返回

var str='zhufengpeixun';
str.slice(2,3)
"u"
str.slice(2,7)
"ufeng"
str.slice(2)
"ufengpeixun"
str.slice()
"zhufengpeixun"
str.slice(-3,-1)  //-3代表从字符串末尾开始,向前3位,-3+(-1)=-2,-2代表取2位,从-3位开始向后取2位
"xu"
//和数组中的slice操作是一样的
  1.不写m是查找到字符串的末尾
  2.n/m都不写是字符串的克隆
  3.支持负数索引:用字符串的总长度+负数索引运算

substring
和slice语法一摸一样
唯一的区别是:slice支持负数索引,而substring不支持负数索引
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDgMAP5j-1576047409846)(./1576045433139.png)]

substr
也是字符串截取方法,用法是:str.substr(n,m), 从索引n开始截取n个字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lsCKevWF-1576047409850)(./1576045820695.png)]

toUpperCase/toLowerCase
实现大小写字母的转换,toUpperCase小写转大写,toLowerCase大写转换小写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBHw3qEw-1576047409856)(./1576046297780.png)]

splite
和数组中的join相对应,数组中的join是把数组中一项按照指定的连接字符串,而split是把字符串按照指定的分割符,拆分成数组中的每一项。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRXxPDEB-1576047409862)(./1576046675555.png)]

replace
作用:替换字符串中原有字符
参数:原有字符,要替换新字符
返回:替换后的字符串

 //=>把“qianduan”换“前端”
var str = 'qianduan2019qianduan2020';
str = str.replace('qianduan','前端')
=>"前端2019qianduan2020"  
//=>在不使用正则的情况下,只能替换一个
str = str.replace('qianduan','前端')
"前端2019前端2020"

//=========正则方法一次性替换
var str = 'qianduan2019qianduan2020';
str = str.replace(/qianduan/g,'前端')
=>"前端2019前端2020"

字符串有很多方法:扩展 String.prototype

  • includes
  • localeCompare
  • search
  • trim

...


suger
3 声望0 粉丝

html系列