其它基础 - 字符串处理 ¶
作者:KK
发表日期:2016.3.3
indexOf查找字符串 ¶
var str = 'AppleWatch';
var atIndex = str.indexOf('at'); // 6 表示在第6个字符后面
alert('"at"这个字符串出现在str变量字符串中的第' + atIndex + '个字母后面');
找不到的时候会返回-1 ¶
var str = 'Abcdbfg'; var bbIndex = str.indexOf('bb'); // -1 //有的人会将条件写成 bbIndex < 0 if(bbIndex == -1){ alert('没有找到字符串'); //所以可以根据是否大于-1来确定是否找到了 }
注意有的人会忘记找不到时会返回-1,于是代码会怎样这样判断:
if(!str.indexOf('xxx')){ alert('没找到'); }
这样的判断条件是不对的,因为找不到返回-1后,判断条件就变成
!-1
,因为-1不是0,所以!-1
的结果是false,于是判断不成功
实际应用 ¶
比如判断用户输入的文章标题有没有禁止发布的文字(以下函数代码注意要用function包住哦!)
function test(){ var title = prompt('请输入文章标题'); if(!title){ alert('请输入文章标题'); return; } if(title.indexOf('枪支')){ alert('抱歉,禁止带有敏感词汇!'); return; } alert('文章标题已更新'); } test();
indexOf方法执地的时候会从字符串的左边开始搜索指定的字符串,一旦遇到就会停止下来并返回那个位置的序号,其实还有个叫lastIndexOf
的方法是可以倒过来搜索的,比较少用,这里暂不介绍,有兴趣可以自己上网查资料
字符串也有许多方法 ¶
对
,虽然变量类型是string,但它也是一种对象,它自带一些跟字符串相关的方法,这些方法都不会改变字符串本身,而是会返回相关的操作结果出来
下面继续将常用的方法介绍一下
substr裁剪字符串 ¶
从指定的位置开始裁剪到最后 ¶
var str = 'abcdefd'; var result = str.substr(4); alert(result); // efd 从第4个字母后面开始裁剪,第4个字母是d,从这里开始裁剪字符串得到的结果就是后面的 efd 三个字母结果 alert(str); // abcdefd 原来的值不会改变
从指定的位置开始裁剪 指定的长度 ¶
var str = 'abcdefgrew'; var result = str.substr(4, 2); // ef 从第4个字母后面开始裁剪2个字母,就是d后面的2个字母 alert(result);
从倒数第N个位置开始裁剪 ¶
var str = '大家好我是中国人'; var result = str.substr(-3); //用负数表示倒数第几个字符,这里-3就是倒数第3个,"中",由于没有第2个参数指定裁剪字符的个数,所以默认裁剪到最后,从"中"字开始哦 alert(result); //"中国人"
这个演示代码没有加入第2个参数来指定裁剪长度,你自己试试加入长度参数看看是否得到了你预期的值?不理解请留言
trim去除空格 ¶
有时候用户的输入会不小心多写一个空格,我们的代码经常要帮他去除一下再做处理,这样可以提高体验效果
使用trim
方法来实现去除左右两边空格,例子
var name = ' 小明 ';
alert('我的名字叫' + name + '哦');
alert('我的名字叫' + name.trim() + '哦');
上面提示第1句的时候会发现"小明"这个词的左边会与"叫"字有一个空格距离,而右边也与"哦"字有一个空格距离
而第2句执行了trim方法返回的字符串就没有了空格,所以整个句子中间是没有空格的
trim方法并不兼容旧版IE浏览器,但一般可以无视,现在用旧版IE的人越来越少了;并且trim也是不会改变字符串本身,只是返回一个去除了空格之后的结果出来
实际应用 ¶
比如要用户注册时输入用户名,但他输入了一堆空格,这时候一般能理解为没输入,但是不去除空格,字符串就会有长度,满足条件判断了,先看看代码
var name = ' '; //假如这是输入后的名字 if(name){ alert('trim之前:输入完毕'); } if(name.trim()){ alert('trim之后:输入完毕'); }else{ alert('trim之后:您输入的姓名为空!'); }
还有ltrim
方法只会去除左边的空格,rtrim
方法会去除右边的空格,请自己试一试
xxCase大小写转换 ¶
转换成大写字母 ¶
用toUpperCase方法
var str = 'ok', str2 = str.toUpperCase(); alert(str2); //提示大写的 OK
来来来再来
alert('Apple'.toUpperCase());
如果字符串中还有数字或符号的话,这些是不会被转换的,只转换字母部分:
alert('One23Four'.toUpperCase())
就是"ONE23FOUR"转换成小写字母 ¶
用
toLowerCase
方法,和toUpperCase方法一样,只是作用相反,转换成小写字母而已alert('OK'.toLowerCase()); //ok alert('AppleWatch'.toLowerCase()); //applewatch alert('AndRoid_Web2b9b'.toLowerCase()); //android_web2b9b