一.字符串操作【算法题必备】
1.字符串创建
var s1 = "hello"
var s2 = new String("hello")
2.属性
s1.length 获取字符串长度
3.方法
(1)获取字符【只能从正向走】
charAt() 只能返回单个的给定位置的字符
charcodeAt() 返回字符编码
[] var s1 = "hello" 方括号下标访问
01234----索引和下标值
console.log(s1[1])
console.log(s1[0])
console.log(s1[2])
(2)【拼接字符串】
+ 字符串连接
concat()用于将一个和多个字符串拼接起来,并返回新的字符串。
var s2=s1.concat("world");
var s2=s1.concat("world","student","!");
(3)子字符串
substr(起始位置,长度) 从起始位置截取到指定长度的子字符串
如起始位置为负数,则倒数
console.log(s1.substr(3)) //lo world 后面是长度
console.log(s1.substr(3,6)) //lo wor
console.log(s1.substr(0)) //hello world
console.log(s1.substr(-3)) //rld 倒着数
console.log(s1.substr(3,-4)) //长度不能是负数,为负数语法出错
console.log(s1.substr(8,3)) //rld
substring(起始位置,终止位置):起始包含,终止不包含
遇到负数,自动转换为0
起始如大于终止,,则自动调换
console.log(s1.substring(3)) //lo world
console.log(s1.substring(3,7)) //lo w
console.log(s1.substring(0)) //hello world
console.log(s1.substring(-3)) //hello world 负数转为0
console.log(s1.substring(3,-4)) //hel 负数都转0 0-3提
console.log(s1.substring(8,3)) //lo wo (3,8)调换位置
slice(起始位置,终止位置):优点:识别负数
console.log(s1.slice(3)) //lo world
console.log(s1.slice(3,6)) //lo
console.log(s1.slice(0)) //hello world
console.log(s1.slice(-3)) //rld
console.log(s1.slice(3,-4)) //lo w 3到-4
console.log(s1.slice(8,3)) //
(4)字符串大小写转换
s1="hello"
s1.toLowerCase() 小写
s1.toUpperCase() 大写
var s1="hello"
console.log(s1.toLowerCase()) //小写
console.log(s1.toUpperCase()) //大写
(5)去空格
s1=" he llo "
s1.trim() 去左右空格
(6)split 字符串分割
s1 = "he,l,lo,wo,r,d"
s1.split(",") [he,l,lo,wo,r,d]
s1.split(",",2) [he,l]
s2 = "hellowol"
s2.split(",")
s2.split(",",2) [he,l]
(7)字符串位置方法
indexOf() 返回指定字符的第一个位置,如找不到,返回-1,
第二个参数表示查找第起始位置
lastIndexOf() 从后向前找
var s1="hello world"
console.log(s1.indexOf("e") ) //1
console.log(s1.indexOf("o")) //4
console.log(s1.indexOf("m")) //-1
console.log(s1.indexOf("o",6)) //7
s1.lastIndexOf("o")
s1.lastIndexOf("1")
(8)替换replace
-
反回新字符串
-
只替换第一个匹配项
s1="hello"
s1.replace("1","m") hemlo
(9)字符串删除
var s1="hello"
console.log(s1.replace("e","")) //hllo
console.log(s1.replace(s1[2],"")) //helo
//*删除字符串中所有的数字
function f1(n1){
for(var i = 0;i<n1.length;i++){
if(n1.charCodeAt(i)>=49&&n1.charCodeAt(i)<=57){
var a = n1.charAt(i)
n1 = n1.replace(a,"")
i=i-1
}
}
alert(n1)
}
f1("he123llo")
(10)字符串的比较***
(1) localeCompare:调用本地操作系统
s1="abc"
s2="edf"
localCompare(s2)
s4= "yellow".localeCompare("yellow") //0
s4= "yellow".localeCompare("blue") //1
s4= "yellow".localeCompare("zoo") //-1
- 英文比较
v1.localeCompare(v2)
v1=v2 返回0
v1排在v2之前返回-1
v1排在v2之后返回1
s2= "3ellow".localeCompare("9oo") //-1
s3= "3ellow".localeCompare("3oo") //-1
s4= "3ellow".localeCompare("Zoo") //-1
- 中文比较–按拼音
s2 = "a".localeCompare("A")
"北京".localeCompare("上海")
alert("a">"A")
//a1["哈尔滨","北京","杭州","上海","深圳"] 排序(升序)
a1.sort((a,b)=>{retuwn a.localeCompare(b)}) //=>ES6函数
a1.sort((a,b)=>{ //排序自带函数
retuwn a.localeCompare(b)
})
console.log(a1)
(2)alert(“a”>“A”) //true 按ascii码比较
(11)字符串编码
- charCodeAt()
放索引
s1="a";
console.log(s1.charCodeAt()) //97 对应的Unicode编码
s2="海"
console.log(s2.charCodeAt()) //28023 对应的Unicode编码
s1="a";
s3=s1.charCodeAt();
s2="罗"
s4=s2.charCodeAt(0)
console.log(s3,s4)
s5=s4.toString(16);
console.log(s5) //7f57
- fromCharCode()
根据ascii或unicode的十进制码进行解析
console.log(String.fromCharCode(65)) //A
console.log(String.fromCharCode(28032)) //海
- escape()
escape() 输出unicode码
unescape(“\u6D77”) 海
encodeURI(s1) //%E6%B5%B7 加密
decodeURI("%E6%B5%B7 ") 解密
s1 ="海"
console.log(escape(s1)) //u6D77
console.log(unescape("\u6D77")) //海
console.log(encodeURI(s1)) //%E6%B5%B7 加密
console.log(decodeURI("%E6%B5%B7 ")) //解密
正则表达式:i-忽略大小写 g-全局查找 reg=/a/ig s3=s2.replace(reg,“m”)
二、拓展Ascii码
a: 97
z: 122
A: 65
Z: 90
0: 48
9: 57
空格:32
回车:13