序号 | 方法 | 描述 |
---|---|---|
1 | length | 属性返回字符串的长度 |
2 | indexOf() | 属性返回字符串中指定文本首次出现的索引(位置) |
3 | lastIndexOf() | 属性返回字符串中指定文本最后一次出现的索引(位置) |
4 | search() | 属性返回字符串中特定值的字符串的首次 出现的索引(位置) |
属性返回字符串的长度
var str = "abcdef"
var strLen = str.length // 6
属性返回字符串中指定文本首次出现的索引(位置)
var str = "abcdef"
var strLen = str.indexOf('d') // 3
属性返回字符串中指定文本最后一次出现的索引(位置)
var str = "abcadef"
var strLen = str.lastIndexOf('a') // 3
注意:
var str = "abcadef"
var strLen = str.IndexOf('a', 2) // 3
var strLen2 = str.lastIndexOf('a', 6) //3
属性返回字符串中指定字符串的首次出现的索引(位置)
var str = "abcdedf"
var strLen = str.search('de') // 3
你注意到了没:
search() 和indexOf() ,是相等的,它俩的区别是:
序号 | 方法 | 描述 |
---|---|---|
1 | slice(start, end) | 提取字符串的某个部分并在新字符串中返回被提取的部分 |
2 | substring(start, end) | 提取字符串的某个部分并在新字符串中返回被提取的部分 |
3 | substr(start, length) | 提取字符串的某个部分并在新字符串中返回被提取的部分) |
slice(start, end)
参数: 起始索引(开始位置),终止索引(结束位置)。
截取的结果包含开始位置,不包含终止位置。
var str = "abcdef"
var strLen = str.slice(2,5) // cde
如果参数为负数,则从字符串的末尾向前计算:
var str = "abcdefjhigk"
var strLen = str.slice(-5,-2) // jhi
如果省略第二个参数,则从起始的位置裁剪到字符串的结尾
var str = "abcdef"
var strLen = str.slice(2) // cdef
// 或者负数,从结尾计算
var strLen2 = str.slice(-3) // def
注意: 负数参数不能用于IE8及以前
substring(start, end)
参数: 起始索引(开始位置),终止索引(结束位置)。
截取的结果包含开始位置,不包含终止位置。
var str = "abcdef"
var strLen = str.substring(2,5) // cde
如果省略第二个参数,则从起始的位置裁剪到字符串的结尾
var str = "abcdef"
var strLen = str.substring(2) // cdef
substr(start, length)
参数: 起始索引(开始位置),被提取的部分的长度
截取的结果包含开始位置。
var str = "abcdefjhigk"
var strLen = str.substr(1,5) // bcdef
如果省略第二个参数,则从起始的位置裁剪到字符串的结尾
var str = "abcdef"
var strLen = str.substr(2) // cdef
如果首个参数为负数,则从字符串的结尾计算位置
var str = "abcdefjhigk"
var strLen = str.substr(-2) // gk
注意: 第二个参数不能是负数,因为它定义的是长度。
replace() 方法不会改变调用它的字符串,返回的是新的字符串
参数: 字符串中即将被替换的文本,替换成的文本
该方法默认只替换首个匹配:
var str = "hello world"
var strx = str.replace("world","xiaomeizi") // hello xiaomeizi
注意: 该方法对大小写敏感,因此不会匹配到大写的”WORLD“
如果想执行大小写不敏感的替换需要使用正则表达式: /i(大小写不敏感 )
var str = "HELLO world"
// 注意:使用正则表达式时不需要带引号
var strx = str.replace(/hello/i,"xiaomeizi") // xiaomeizi world
**toUpperCase():**把字符串转换成大写
var str = "hello world"
var strx = str.toUpperCase() // HELLO WORLD
**toLowerCase():**把字符串转换成小写
var str = "Hello World"
var strx = str.toLowerCase() //hello world
concat(): 连接两个或多个字符串
参数: 第一个参数是用什么连接,第二个是连接到谁,以此类推可连接多个
var str1 = "Hello"
var str2 = "World"
var str3 = "xxx"
var strx = str1.concat(" ",str2) //Hello World
var stry = str1.concat(" ",str2," 123 ",str3) //Hello World 123 xxx
concat() 方法可用于代替加运算符,下面两行代码等效:
var strx = "Hello" + " " + "World" //Hello World
var stry = "Hello".concat(" ","World") //Hello World
注意: 所有字符串的方法都会返回新字符串。它们不会修改原始字符串。
正式的说:字符串是不可变的:字符串是不可变的,字符串不能更改,只能替换。
trim() 去掉字符串两端的空格
var str1 = " Hello World "
var stry = str1.trim() //Hello World
注意: IE8及更低版本不支持 trim() 方法。
charAt(position): 方法返回字符串中指定下标(位置)的字符串
参数: 指定下标(位置)
var str1 = "Hello World"
var stry = str1.charAt(0) // 返回 H
charCodeAt(position): 方法返回字符串中指定下标(位置)的字符unicode编码
参数: 指定下标(位置)
var str1 = "Hello World"
var stry = str1.charCodeAt(0) // 返回 72
var str1 = "Hello World"
var stry = str1[0] // 返回 H
// 注意:不能给属性赋值
str1[0] = "A" // 不会报错,但是无效
注意: 使用属性访问有点不太靠谱:
split(): 将字符串转换为数组:
var str1 = "a,b,c,d,e,f"
var arr = str1.split(",") // 用逗号分隔
// var arr = str1.split(" ") // 用空格分隔
// var arr = str1.split("|") // 用竖线分隔
arr[0] // 返回 a
arr[0] = "H" // 可以接受赋值,当前 arr[0] 返回 H
如果忽略分隔符,被返回的数组将包含index[0]中的整个字符串
如果分隔符是""(空字符串),被返回的数组僵尸间隔单个字符的数组:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 字符串方法</h1>
<p id="demo"></p>
<p id="demo2"></p>
<script>
var str1 = "abcdef"
var arr1 = str1.split() // 忽略分隔符
var arr2 = str1.split("") // 用空字符串分隔
var text1 = "";
var text2 = "";
var i;
for (i = 0; i < arr1.length; i++) {
text1 += arr1[i] + "
"
}
document.getElementById("demo").innerHTML = text1; // 返回abcdef
for (i = 0; i < arr2.length; i++) {
text2 += arr2[i] + "
"
}
document.getElementById("demo2").innerHTML = text2;
// demo2 返回:
// a
// b
// c
// d
// e
// f
</script>
</body>
</html>