文章目录
JavaScript对象编程(六)
一、String对象
String 对象用于存储和处理文本
(1)创建String对象
var str = new String( 'Hello world ' )
str.length //11 访问String对象length属性
(2)类型检查
var a = ' hello'
typeof a // string
var b = new String( ' hello')
typeof b // object
二、String对象访问
在早期的JavaScript设计中,字符串被设计为一种只读的字符数组,因此,字符串可以用数组的访问方式访问其中的字符
(1)访问方式
下标访问
var a = 'hello'
a[1] // 'e'
标准访问方式charAt()
var a = 'hello'
a.charAt(1) // ' e '
(2)字符串的不可变性
在JavaScript 中,字符串的值是不可变的,这意味着一旦字符串被创建就不能被改变。
var a = '123'
a[0] = '0'
console.log(a) // '123'
无法改变,但可以重新赋值
var a = '123'
a = '023'
console.log(a) // '023'
三、String对象的修改
原始数据类型的字符串无法修改,但可以使用String对象的replace()方法进行修改
replace()
str.replace(要修改的字符,替换后的字符)
replace无法修改原字符串,只是返回一个新字符串
var a = '123'
var b = a.replace( ' 1 ',' 0 ') // a的值仍为'123',b的值为'023'
替换的值可以为空
var a = '123'
var b = a.replace( '1',' ') // b的值为'23'
可以为多个字符进行操作
var a = '1234567'
var b = a.replace( '123','0123') // b的值为"01234567”
四、String对象的分割
split() 传入一个分隔符作为参数,以该分隔符为标准,将字符串进行分割并存入一个新数组并返回
var a = '2021-4-6'
var b = a.split('-') // b: ['2021','4','6'],a:'2021-4-6'
注意分隔符位置
var a = '-2021-4-6-’
var b = a.split('-') // b:[ ' ','2021','4','6',' ']
分隔符可以为空
var a = '123'
var b = a.split(' ') // b: ['1','2' ,'3']
第二个参数可选,代表分割后数组的最大长度
var a = '2021-4-6'
var b = a.split('-',2) // b: ['2021','4']
分隔符可以为空格
var a = 'Hello world'
var b = a.split(' ') // b: [ ' Hello' , 'world' ]
五、String对象常用方法
indexOf() 返回要查找的字符第一次出现的位置下标,若未找到返回-1
var a = '1234567'
a.indexOf('3') //返回2
a.indexOf('8') //返回-1
toLowerCase() 把字符串转为小写,不会修改原字符串
var a = 'ABC'
var b = a.toLowerCase( ) //b : "abc",a: "ABC"
toUpperCase() 把字符串转为大写,不会修改原字符串
var a = 'abc'
var b = a.toUpperCase( ) //b:"ABC",a : "abc "
六、String对象的截取
trim() 移除空白符(空格、制表符、换行符等),只对头尾操作,不会修改原字符串
var a = ' a b c ’
var b = a.trim( ) // b : 'a b c', a: ' a b c '
slice() 截取字符串,与数组的slice方法相同
var a = '1234567'
var b = a.slice(2) // b: '34567', a: '1234567'
substring() 该方法与slice类似,但参数不能使用负数,若参数为负数会被当做0看待
var a = '1234567'
var b = a.substring(2) // b:'34567', a: 1234567'
var b = a.substring(2,5) // b: '345', a:'1234567'
substring() 的参数位置没有严格要求
var a = '1234567'
var b = a.substring(5,2) // b: '345', a: '1234567'
substr() 第二个参数为要截取的数量
var a = '1234567'
var b = a.substr(2) // b: '34567', a: '1234567'
var b = a.substr(2,3) // b: '345', a: '1234567'
七、String对象的合并
concat() 将一个或多个字符串与原字符串连接合井,形成一个新的字符串并返回。concat方法并不影响原字符串。
var a = '123'
var b = '456'
var c = a.concat(b) //c: "123456",a: "123"
练习
将下划线命名法的字符串转为小驼峰命名法
例:输入thisis_an_example,输出thislsAnExample
function toCamelStyle(str) {
var arr = str.split('_')
var newStr = arr[0]
for (var i = 1; i < arr.length; i++){
newStr += arr[i][0].toUpperCase( ) + arr[i].slice( 1)
}
return newStr
}
拓展知识
利用localeCompare() 和sort进行排序
var a = 'ac'
var b = 'ab'
a.localeCompare(b) //返回1
b.localeCompare(a) //返回-1
var a=[
{
name: 'Bob'
},
{
nane: 'cart'
},
{
nane: 'Alice'
}
]
a.sort( function (a, b){
return a.name.localeCompare(b.name)
})
比较中文字符,第二个参数为可选,代表语言码,会按照该语言规则来进行比较
var a ='张三'
var b ='李四'
a.localeCompare(b,'ZH') //返回1
b.localeCompare(a,'ZH' ) //返回-1
其中‘ZH’表示中文,具体列表见ISO 639-1语言代码