获取字符串长度
str.length
返回数字
length为属性值,后面不加括号
获取字符串指定位置的字符
str[index]
- 返回字符串
- 必须有索引值,超出范围返回undefined
1 2 3 4
| str = "abc" str[0] str[-1] str[100]
|
str.charAt(index)
- 返回字符串
- 索引值默认为0,超出范围返回
空字符串""
1 2 3 4
| str = "abc" str.charAt() str.charAt(-1) str.charAt(100)
|
str.charCodeAt(index)
- 返回索引位置字符的Unicode编码
- 索引值默认为0
- 超出范围返回
NaN
(空字符,无对应)
1 2 3
| str = "abc" str.charCodeAt() str.charCodeAt(-1)
|
检索字符串是否包含特定序列
indexOf(searchValue,start)
- 返回数字
- 不给参数,返回-1;
- 参数为"",返回0;
- 设置参数,返回对应索引/-1;
- 参数字符串长度>1,只认第一个字符
- start当做索引截取字符串,之后再判断
1 2 3 4 5 6 7
| str = "abc" str.indexOf() str.indexOf("") str.indexOf("c") str.indexOf("d") str.indexOf("bcd") str.indexOf("bcd",2)
|
lastIndexOf(searchValue,position)
- 返回数字
- 不给参数,返回-1;
- 参数为"",返回字符串长度;
- 设置参数,返回最后一个相同字符对应索引/-1;
- 参数字符串长度>1,只认第一个字符
- position截取的是 [0,position]
1 2 3 4 5 6
| str = "abca" str.lastIndexOf() str.lastIndexOf("") str.lastIndexOf("a") str.lastIndexOf("bc") str.lastIndexOf("bc",2)
|
includes(searchValue,start)
- 返回Boolean
- 对字符串从start截取[start,];
- 从截取出的字符串中查找是否包含要找的字符串,返回true/false;
- start默认为0,start<0?0:start
1 2 3 4 5 6
| str = "abcde" str.includes("ab") str.includes("ab",0) str.includes("ab",1) str.includes("ab",-100) str.includes("ab",100)
|
startsWith(searchValue,start)
- 返回Boolean
- 检测字符串是否以指定的子字符串开始。
- 如果是以指定的子字符串开头返回 true,否则 false。
- 其语法和上面的includes()方法一样。
1 2 3 4 5 6 7 8 9
| str = "abcde" str.startsWith("a"); str.startsWith("A"); str.startsWith("bc"); str.startsWith("a",-1); str.startsWith("bc",-1); str.startsWith("bc",1); str.startsWith("",3); str.startsWith();
|
endsWith(searchValue,position)
- 返回Boolean
- 先返回字符串的 [0,position)
- 检测字符串是否以指定的子字符串结尾。
- 返回true/false
1 2 3 4 5
| str = "abcde" str.endsWith("e"); str.endsWith("e",5); str.endsWith("e",4); str.endsWith("e",-1);
|
连接多个字符串
string.concat(string1, string2, ..., stringX)
返回字符串
数组也有相同的方法(返回数组)
1 2 3 4 5 6
| str = "abc" str_1 = "de" str_2 = "f" str.concat(str_1,str_2) str.concat(...str_1) str.concat(...str_1,str_2)
|
字符串分割为数组
string.split(separator,limit)
- separator:字符串或正则表达式
- limit:分割后,数组的最大长度
1 2 3
| str = "apples,bananas;cherries" str.split("a") str.split(/[,;]/)
|
截取字符串
slice(start,end)
- 返回
[start,end)
范围的字符串
- start、end均可以为负数,负数从尾部计算
1 2 3 4 5
| str = "abcde" str.slice() str.slice(0,2) str.slice(-1) str.slice(-5,-2)
|
substr(start,length)
- 返回
[start
开始的length长度的字符串
- start为负数,从尾部计算
1 2 3 4 5 6
| str = "abcde" str.substr() str.substr(1) str.substr(1,2) str.substr(-5,2) str.substr(-5,-1)
|
substring(start,end)
- 返回
[start,end)
的字符串
- start为负数,从尾部计算,end不能为负数
1 2 3 4 5
| str = "abcde" str.substring() str.substring(1,3) str.substring(-5,3) str.substring(-5,-1)
|
- slice和substring基本相同,但substring的end不能为负数
- substr通过length确定截取长度
大小写转换
toUpperCase(str)
将str中字符转换为大写
toLowerCase(str)
将str中字符转换为小写
1 2 3
| str = "Abcde" str.toLowerCase() str.toUpperCase()
|
字符串模式匹配
replace(searchValue,replacement)
- searchValue可以是字符串或者正则表达式
- replacement可以是字符串或函数
1 2 3 4
| str = "AbcdeA" str.replace("A","a") str.replace(/A/,word=>word.toLowerCase()) str.replace(/A/g,word=>word.toLowerCase())
|
replacement中的其他用法参考:JavaScript replace() 方法
match(searchValue/regexp)
- 匹配字符串或正则表达式
- 若匹配到一个相关文本,返回数组带有该文本及原字符串相关信息
- 若匹配到多个字符,返回匹配到的字符组成的数组
1 2 3 4
| str = "AbcdeA" str.match("A") str.replace(/A/) str.replace(/A/)
|
search(searchValue/regexp)
- 返回匹配到的字符在原字符串的起始位置索引
- 正则全局匹配不生效(无法匹配多个)
1 2 3 4 5 6
| str = "AbcdeA" str.search("A") str.search(/A/) str.search(/A/g) str.search() str.search("")
|
移除首尾空白符
trim()
1 2
| str = " abc " str.trim()
|
trimStart()
1 2
| str = " abc " str.trimStart()
|
trimEnd()
1 2
| str = " abc " str.trimEnd()
|
获取字符串本身
用来将其他对象转化为字符串
valueOf()
具体使用及转化情况见:Object.prototype.valueOf()
toString()
具体使用及转化情况见:Object.prototype.toString()
重复字符串
repeat(count)
- count为小数时,向下取整
- count为0时,返回""
- count为负数/Infinity,报错
- count为NaN,等同于0
- count为字符串时,先转化为数字–>数字/NaN
1 2 3 4 5 6 7
| str = "abc " str.repeat() str.repeat(1) str.repeat(2.8) str.repeat("2") str.repeat("a") str.repeat(-1)
|
补齐字符串长度
padStart(targetLength, padString)
padEnd(targetLength, padString)
1 2 3
| str = "abc " str.padStart(4,"A") str.padEnd(4,"A")
|
字符串转数字
parseInt(string, radix)
- 认为string以radix为进制,将其转换为10进制表示
- 若字符串第一个字符不是数字,返回NaN
- 遇到string中第一个不是数字的字符后返回
- radix默认为10
- 当string以0x或0X开头,radix默认16
- radix范围:2-36 (0-9+26字母=36),超出范围返回NaN
1 2 3 4 5
| parseInt("a100") parseInt("100a") parseInt("100 a") parseInt("100",3) parseInt("0x10")
|
parseFloat(string)
将string转换为10进制浮点数
- 如果 parseFloat 在解析过程中遇到了正号(
+
)、负号(-
U+002D HYPHEN-MINUS)、数字(0-9
)、小数点(.
)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数
- 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)
- 参数首位和末位的空白符会被忽略
- 如果参数字符串的第一个字符不能被解析成为数字,则返回 NaN
- parseFloat 也可以解析并返回 Infinity
- parseFloat 解析 BigInt 为 Numbers, 丢失精度。因为末位 n 字符被丢弃
1 2 3 4 5 6 7
| parseFloat(3.14); parseFloat('3.14'); parseFloat(' 3.14 '); parseFloat('314e-2'); parseFloat('0.0314E+2'); parseFloat('3.14some non-digit characters'); parseFloat({ toString: function() { return "3.14" } });
|
更多内容见:parseFloat
参考资料:
最全的js 字符串操作方法_难瘦丶的博客-CSDN博客_js字符串操作方法
JavaScript | MDN (mozilla.org)
JavaScript 教程 (w3school.com.cn)