全回顾扫盲js之字符串类型

首先,string类型不可修改。只能将原字符清空然后将新值赋上。

对象下的方法,常用的有charAt()、charCodeAt()、concat()、indexOf()、slice()、split()、substring()、toLowerCase()、toUpperCase()、toString()、match()、search()、replace()

其中,match()、search()、replace()涉及到正则的操作,在正则那篇再详细讨论,这里略过

charAt()、charCodeAt(),查找对应下表的字符和编码

var str="Ma Zhao Yang!"
console.log(str.charAt(1), str.charAt(2), str.charAt('3'), str.charAt('3abc'))             // a    ZM
console.log(str.charCodeAt(1), str.charCodeAt(2), str.charCodeAt('3')) //97 32 90

上述栗子中,可以看出charAt()需要一个数字参数,来获取字符串中的某一位的字符,charAt(2)是一个空格,也是会被识别的。我传了一个字符串'3'进去,也会被识别成3,说明它会自动转换。但是我进一步的传入'3abc',会返回第一位字符,这个目前还不是特别理解,他并没有用Number()或者parseInt来转换这个字符串。当传入位数不存在时,会返回空字符串

charCodeAt()与charAt()类似,只是获取的是对应的字符的 Unicode 编码。

concat(),拼接字符串

var str1="Ma "
var str2="Zhaoyang"
console.log(str1.concat(str2))  // Ma Zhaoyang
console.log(str1)   // Ma

String的cantat方法,跟Array的cancat方法类似,就是将多个字符串连接起来,返回一个新的字符串,并不会对原字符串产生任何影响。

indexOf(),判断字符串是否包含某字符及其位置

var str="Ma Zhaoyang"
console.log(str.indexOf('Ma'))  // 0
console.log(str.indexOf('Z'))   // 3
console.log(str.indexOf('Zh'))  // 3
console.log(str.indexOf('zh'))  // -1

indexOf()方法,会返回字符位置,如果不包含,则返回-1,如果是用多位字符去匹配,返回的是第一个字符所在位置。并且区分大小写。

slice(),方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

var str="Ma Zhaoyang"
console.log(str.slice(0))       //Ma Zhaoyang
console.log(str.slice(0, 1))       //M
console.log(str.slice(1))       // a Zhaoyang
console.log(str.slice(1, 6))    // a Zha
console.log(str.slice(1, -1))    // a Zhaoyan
console.log('aaaaaa', str.slice(3, 2))    //
console.log(str.slice(1, str.length))    // a Zhaoyan
console.log(str)                // Ma Zhaoyang

slice()方法,传两个参数,起始位置,结束为止。如果只传起始位置,则返回从起始位置到最后。起始位置包含当前位置的字符,比如传0,肯定是从第0位开始的。结束为止不包含当前字符,比如我输入(0)和输入(0,1)结果是一样的。相对应的,如果我输入(0)和输入(0, str.length)结果是一样的,而不能是(0, str.length-1),因为结束位本身就不包含当前位数字符。 如果结束位是负值,则倒着往回减,不能输入(0, -0),因为这回返回空。(0, -1)就向后减去一位。最后,str字符串是没有受影响的。如果结束位比起始位小,则返回空字符串

split() 方法用于把一个字符串分割成字符串数组。

var str = 'Ma Zhao Yang'
console.log(str.split(" "))     // ["Ma", "Zhao", "Yang"]
console.log(str.split(""))      // ["M", "a", " ", "Z", "h", "a", "o", " ", "Y", "a", "n", "g"]
console.log(str.split(" ",2))   // ["Ma", "Zhao"]
console.log(str)                // Ma Zhao Yang

split()方法,首先是作用在字符串上的,一个参数,就是分割的规则,如果是(""),则每个字符都会单独存入数组。第一个参数为必须参数。第二个参数是选填,定义数组的最大长度 如果超出长度,则后面的不要。原字符串不受影响。

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

var str = "Ma Zhaoyang"
console.log(str.substring(1))       // a Zhaoyang
console.log(str.substring(1, 4))    // a Z
console.log(str.substring(4, 1))   // a Z
console.log(str.substring(4, -1))   // Ma Z
console.log(str)                    // Ma Zhaoyang

substring()跟slice一样,也是接受两个参数,起始位置和结束为止。原始字符串不受影响。包含起始位不包含结束位。区别是,substring不接受负数参数,如果结束位比起始位小的时候,两个位置会自动调换位置,而 slice就不会,slice会返回空字符串。我做了下测试,结束位传入负数,结束位会小于起始位,然后按照规则两个调换位置,返回结果就是0-》起始位的结果

toLowerCase()、toUpperCase()

将字符转换大小写,这两个方法没啥好说的,跟字面意思一样容易理解

toString() 方法返回字符串。

好吧,在这里写上toString()方法,因为平时用这个方法用的挺多的。但是这个方法用在字符串上面也没啥意义。 array.toString() 、 boolean.toString() 、 date.toString() 、 Number.toString() 等等toString()是将对应内容转成string。

ok,再最后总结一下,字符串这些操作方法,都不会对原字符串产生影响,包括toLowerCase和toUpperCase,全都是。这点可以跟array、object这些分开记。

随机浏览