JavaScript 字符串操作(给索引查字符/给字符查索引/uri 编码和解码/字符串拼接/字符串截取/去掉空白/替换/变为数组/查找字符串中所有匹配项)

JavaScript 字符串操作

①  给索引查字符 charAt / charCodeAt )
charAt,获取相应位置字符(参数: 字符位置)
注释:字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串。
charCodeAt,获取相应位置字符编码(参数: 字符位置)
charAt()方法和charCodeAt()方法用于选取字符串中某一位置上的单个字符
区别:charCodeAt()方法,它并不返回指定位置上的字符本身,而是返回该字符在Unicode字符集中的编码值。如果该位置没有字符,返回值为NaN.
字符/字符编码 = Str.charAt/charCodeAt(索引值);


 给字符查索引indexOf / lastIndexOf
indexOf,从前向后索引字符串位置(参数: 索引字符串)
从前面寻找第一个符合元素的位置
lastIndexOf,从后向前索引字符串位置(参数:索引字符串)
从后面寻找第一个符合元素的位置
找不到则返回 -1
索引值 = str.indexOf/lastIndexOf(想要查询的字符);


③  uri 编码和解码
URI (Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。有效的URI中不能包含某些字符,例如空格。而这URI编码方法就可以对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受和理解。(它们是BOM下的一个方法,属于window对象)
encodeURIComponent() 函数可把字符串作为 URI 组件进行 编码
decodeURIComponent() 函数可把字符串作为 URI 组件进行 解码


④  字符串的链接concat
新字符串 = str1.concat(str2); 链接两个字符串


⑤  字符串的截取
slice,截取字符串(参数:1. 截取位置【必须】,2. 终结点)
字符串 = str.slice(索引1,索引2); //两个参数都是索引值。
//(2,5)  正常包左不包右
//(2)   从指定的索引位置剪到最后
//(-3)   从倒数第几个剪到最后
//(5,2)  前面的大,后面的小,无意义,空

substr,截取字符串(参数:1. 截取位置【必须】,2. 截取长度)
字符串 = str.substr(参数1,参数2); //1索引值,2长度
// 第一个参数为从索引位置取值,第二个参数返回字符长度
//(2,4)从索引值为2的字符开始,截取4个字符
//(1)  一个值,从指定位置到最后
//(-3) 从倒数第几个剪到最后
// 不包括前大后小的情况

substring 同slice
字符串 = str.substring(参数1,参数2); //两个参数都是索引值。
//不同1:参数智能调转位置
//不同2:参数负值,将全部获取字符串
//(2,5)   正常包左不包右
//(2)     从指定的索引位置剪到最后
//(-3)    获取全部字符串
//(5,2)   前面的大,后面的小,不是空,同(2,5),智能调换


⑥  特殊方法
trim( )      只能去除字符串前后两端的空白
var str = " aaa bnn dccc "
console.log(str.trim()); //aaa    bnn   dccc

replace( )   替换
var str = "abc";
console.log(str.replace("a","b"));//bbc

split( )  把字符串切割成数组和 join方法(数组转为字符串) 是天生一对
var str = "我-爱-你-中-国";
//若参数为空字符串"",默认用逗号把字符串中的每个元素分隔
console.log(str.split(""));//["我", "-", "爱", "-", "你", "-", "中", "-", "国"]
//若不写参数,整个字符串作为数组的一个元素
console.log(str.split());//["我-爱-你-中-国"]
//分隔完毕之后,使用的工具将不存在数组中
console.log(str.split("-"));//["我", "爱", "你", "中", "国"]

to(Locale)UpperCase()   转换大写
to(Locale)LowerCase()   转换小写


案例:如何在一个字符串中查找所有的匹配项?
var arr1 = 'a,b,d,e,f,e,f,e,g'.split(',');
//找到第一个e的索引
arr1.indexOf('e');//3
//等价于(第二个参数:从第0个位置开始找)
arr1.indexOf('e',0);//3
//找到第二个e的索引(从第一个找到的位置的下一个位置开始找)
arr1.indexOf('e',4);//5
//找到所有的e
var i1 = arr1.indexOf('e');
var i2 = arr1.indexOf('e', i1 + 1);
var i3 = arr1.indexOf('e', i2 + 1);
var i4 = arr1.indexOf('e', i3 + 1);
//将上述代码从形式上转换成一模一样的代码
//将其写入循环(while)
i1 = -1;
while(1){
    i1 = arr1.indexOf('e', i1 + 1);
    //什么时候跳出?
    //如果i1结果是-1,说明从左往右查找字符串都没有得到需要的数据,即已经遍历完所有数据
    if(i1 == -1){
        break;
    }
}
//改良(bug:进不去循环)
var i1 = -1;
while(i1 != -1){
    i1 = arr1.indexOf('e', i1 + 1);
}
//先做一次再进循环
var i1 = -1;
do{
    i1 = arr1.indexOf('e', i1 + 1);
    if(i1 != -1){
        console.log(i1);
    }
}while(i1 != -1);








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值