我们知道在JavaScript中,不仅引用类型也有方法和属性,而且string、number、boolean这三种基本数据类型也有方法和属性,有关详解可以参考我的上篇博文JavaScript中的包装类。
今天我们就来对字符串(严格地说,应该是 String对象)的属性和常用方法做个总结,有利于我们系统的学习和掌握
String对象一共有三个属性:
constructor:对创建该对象的函数的引用
length:返回字符串的长度
prototype:允许您向对象添加属性和方法
最常用的 length 属性
实例:
var str = 'beautiful'
var len = str.length
console.log(len) // 9(字符串的长度为9)
- 返回字符串中指定文本首次出现的索引(位置)
参数一:string 要查找的字符串
参数二:start 查找的起始位置(可省略)
实例:
var str = 'You are so beautiful and so cute'
var pos = str.indexOf('so')
console.log(pos) // 8('so'首次出现在str中的索引位置为 8)
- 返回字符串中指定文本最后一次出现的索引(位置)
参数一:string 要查找的字符串
参数二:start 查找的起始位置(可省略)
实例:
var str = 'You are so beautiful and so cute'
var pos = str.lastIndexOf('so')
console.log(pos) // 25('so'最后一次出现在str中的索引位置为 25)
如果未找到文本,indexOf() 和 lastIndexOf()均返回 -1
- 返回字符串中指定文本首次出现的索引(位置)
参数:string 要查找的字符串
实例:
var str = 'You are so beautiful and so cute'
var pos = str.search('so')
console.log(pos) // 8('so'首次出现在str中的索引位置为 8)
其中,indexOf() 和 search()是相等的,
不同的是:
1.search()方法无法设置第二个开始位置参数
2.indexOf()方法无法设置更强大的搜索值(正则表达式)
有三种提取部分字符串的方法:
1.slice(start,end)
2.substring(start,end)
3.substr(str,length)
- 提取字符串的某个部分并在新字符串中返回被提取的部分
参数一:start 起始索引(开始位置)
参数二:end 结束索引(结束位置)可省略(省略则是裁剪开始位置到最后)
实例:
var str = 'You are so beautiful'
var res = str.slice(4,7)
console.log(res) // are
如果某个参数为负,则从字符串的结尾开始计数
下面例子裁剪字符串中位置 -17 到位置 -13 的片段
var str = 'You are so beautiful'
var res = str.slice(-17,-13)
console.log(res) // are
- 类似于 slice()
不同的是 substring()无法接受负的索引
如果省略第二个参数,则裁剪开始位置到字符串末尾
实例:
var str = 'You are so beautiful'
var res = str.substring(4,10)
console.log(res) // are so
- 类似 slice(),不同的是第二个参数规定被提取部分的长度
参数一:start 起始索引(开始位置)
参数二:length 被提取部分的长度 可省略(省略将裁剪到字符串最后)
同样:当 start 为负值时,从结尾开始计算
实例:
var str = 'You are so beautiful'
var res = str.substr(4,10)
console.log(res) // are so bea
参数一:str 被替换的字符串
参数二:restr 替换的字符串
- 用另一个值替换在字符串中指定的值(且只会替换收个匹配)
注意:该方法对大小写敏感,该方法可以匹配正则表达式!
实例:
var str = 'You are so beautiful'
var res = str.replace('beautiful','cute')
console.log(res) // You are so cute
- 把字符串转换为大写
注意:该方法对大小写敏感,该方法可以匹配正则表达式!!!
实例:
var str = 'You are so beautiful'
var res = str.toUpperCase()
console.log(res) // YOU ARE SO BEAUTIFUL
- 把字符串转换为小写
注意:该方法对大小写敏感,该方法可以匹配正则表达式!!!
实例:
var str = 'BEAUTIFUL'
var res = str.toLowerCase()
console.log(res) // beautiful
- 连接两个或多个字符串
实例:
var str1 = 'hello'
var str2 = 'world'
var res = str1.concat(' ',str2)
console.log(res) // hello world
- 删除字符串两端的空白符
实例:
var str = ' hello world '
var res = str.trim()
console.log(res) // 'hello world'
这是两个提取字符串字符的安全方法:
1. charAt(position)
2. charCodeAt(position)
- 返回字符串中指定下标(位置)的字符串:
实例:
var str = 'You are so beautiful'
var res = str.charAt(0)
console.log(res) // Y
- 返回字符串中指定索引的字符 unidoce 编码:
实例:
var str = 'You are so beautiful'
var res = str.charCodeAt(0)
console.log(res) // 89
ECMAScript 5(2009)允许对字符串的属性访问 [ ]:
实例:
var str = 'You are so beautiful'
console.log(str[0]) // Y
注意:
1.属性访问是只读的,不能赋值
2.找不到字符串,会返回 undefined,而 charAt()返回空字符串
3.让字符串看起来像是数组(其实并不是)
- 将字符串转换为数组
实例:
var str = 'You are so beautiful'
var arr = str.split(' ')
console.log(arr) // ['You', 'are', 'so', 'beautiful']
search 检索与正则表达式相匹配的值
match 找到一个或多个正则表达式的匹配
replace 替换与正则表达式匹配的子串
split 把字符串分割为字符串数组