1、str.charAt(index), str.charCodeAt(index) ,String.fromCharCode(num1,num2,…,numN)
str.charAt(index); 方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符串,index为字符串下标,index取值范围[0,str.length-1]
var str = "fuck"
console.log(str.charAt(3))//k
console.log(str.charAt(9)//""空字符串
str.charCodeAt(index); 返回子字符串的unicode编码,index取值范围同上
String.fromCharCode(num1,num2,…,numN); 根据unicode编码返回字符串
应用:只允许输入数字检测
var str = $("input").val();
if(detectNum(str))
{
alert("是数字");
}
function detectNum(str1)
{
var n = 0;
for(var i=0;i<str1.length;i++)
{
n=str1.charCodeAt(i);
if(n<48 || n>57)
{
return false;
}
}
return true;
}
2. 截取字符串substring,substr,slice
substring: (start开始位置的索引,end结束位置索引) 截取后不改变原来字符串,返回一个新的字符串;只写一个参数表示从开始位置截取到最后;截取的位置不包含结束位置的字符
var str = "apple"
var new_str = str.substring(1)//表示从索引1开始到字符串结束
console.log(new_str)//pple
var new_str2 = str.substring(1,4)//表示从索引1开始到字符串结束
console.log(new_str2)//ppl
substr:(start开始位置索引,end需要返回的字符个数) 截取后不改变原来字符串,返回一个新的字符串
不写第二个参数表示直到最后
var str='abcdefg';
str.substr(1) //bcdefg
str.substr(1,1) //b
str.slice(start,end); 两个参数可正可负,负值代表从右截取,返回值:[start,end) 也就是说返回从start到end-1的字符;
注意:起始字符要比结束字符小,否则截取不成功
var str = 'abcde leodonna'
console.log(str.slice(1,8))//bcde le
console.log(str.slice(1,-2))//bcde leodon
console.log(str.slice(-4,-1))//onn
console.log(str.slice(8))//odonna
3.字符串分割成数组
str.split(separator,limit); 参数1指定字符串或正则,参照2指定数组的最大长度
例:str.split(""); 每个字符都被分割 [’’,’’,’’,’’]
str.split(); 整个字符串放到数组里 [’’]
【引申】:数组变成字符串
arr.join(分隔符) 以,连接
arr.join(’’) 无缝连接
arr.join(’-’) 以-连接
arr.join(’’ + str + ‘’) 以表达式连接
4.字符串替换
str.replace(rgExp/substr,replaceText) 返回替换后的字符串
var str="cat,bat,sat,fat";
var res=str.replace("at","one");//第一个参数是字符串,所以只会替换第一个子字符串
console.log(res);//cone,bat,sat,fat
var res1=str.replace(/at/g,"one");//第一个参数是正则表达式,所以会替换所有的子字符串
console.log(res1);//cone,bone,sone,fone
5. 字符串正则匹配
str.match(rgExp);
/*
match方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式
search方法:只接受一个参数,由字符串或RegExp对象指定的一个正则表达式
search方法返回字符串中第一个匹配项的索引,如果没有匹配项,返回-1
*/
var str="cat,bat,sat,fat";
var pattern=/.at/;
var matches=str.match(pattern);
console.log(matches.index);//0
console.log(matches[0]);//cat
console.log(pattern.lastIndex);//0
//lastIndex表示开始搜索下一个匹配项的字符位置,从0算起
var pos=str.search(/at/);
console.log(pos);//1 1表示at字符串在原来字符串中第一次出现的位置
ES2019中还增加matchAll()方法返回一个正则表达式在当前字符串的所有匹配
目前有一个提案,增加了String.prototype.matchAll方法,可以一次性取出所有匹配。不过,它返回的是一个遍历器(Iterator),而不是数组。
const string = 'test1test2test3';
// g 修饰符加不加都可以
const regex = /t(e)(st(\d?))/g;
for (const match of string.matchAll(regex)) {
console.log(match);
}
// ["test1", "e", "st1", "1", index: 0, input: "test1test2test3"]
// ["test2", "e", "st2", "2", index: 5, input: "test1test2test3"]
// ["test3", "e", "st3", "3", index: 10, input: "test1test2test3"]
遍历器转为数组是非常简单的,使用…运算符和Array.from方法就可以了。
// 转为数组方法一
[...string.matchAll(regex)]
// 转为数组方法二
Array.from(string.matchAll(regex));
6. 字符串大小转换
toLowerCase:方法返回一个字符串,该字符串中的字母被转换成小写。
toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。
var str = "wobushiZZde KuaiiLE"
console.log(str.toLowerCase());//wobushizzde kuaiile
console.log(str.toUpperCase());//WOBUSHIZZDE KUAIILE
7.查找指定字符串位置
indexOf(string) 返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。
lastIndexOf(string) : 返回String对象内最后一次出现子字符串位置。如果没有找到子字符串,则返回-1。
8. 删除字符串前后的空格
trim:
var str=" hello world ";
console.log('('+str.trim()+')');//(hello world)
console.log('('+str+')');//( hello world )
ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
const s = ' abc ';
s.trim() // "abc"
s.trimStart() // "abc "
s.trimEnd() // " abc"
浏览器还部署了额外的两个方法,trimLeft()是trimStart()的别名,trimRight()是trimEnd()的别名。
9. 字符串重复n次
repeat方法返回一个新字符串,表示将原字符串重复n次。参数如果是小数,会被取整。如果repeat的参数是负数或者Infinity,会报错。但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。参数NaN等同于 0。如果repeat的参数是字符串,则会先转换成数字。
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
'na'.repeat(-0.9) // ""
'na'.repeat(NaN) // ""
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
es6中更多字符串新增方法请点击:http://es6.ruanyifeng.com/#docs/string-methods#实例方法:repeat

这篇博客总结了JavaScript中的字符串方法,包括charAt、charCodeAt、fromCharCode、substring、substr、slice、split、join、replace、match、toLowerCase、toUpperCase、indexOf、lastIndexOf、trim系列方法以及ES6中新增的repeat方法。还提到了ES2019的trimStart和trimEnd,以及字符串转数组和数组转字符串的方法。
&spm=1001.2101.3001.5002&articleId=93721963&d=1&t=3&u=5aa9886135c6488cb4d28e633134e3b5)
1004

被折叠的 条评论
为什么被折叠?



