字符串
一、字符串的方法
@1、charAt
通过下标去取值
var str = 'chengxiaohui';// 通过下标取值var res = str.charAt(0);//"c"// 如果找不到,返回值是空串var res2 = str.charAt(12);//""// 如果直接是索引去取值,找不到,返回是undefinedvar res3 = str[12];//undefined
@2、charCodeAt
通过下标取值对应的ascii码值
var str = 'chengxiaohui';// 通过下标取值var res = str.charCodeAt(0);//99 "c"==>ASCII码console.log(res);//99
@3、indexOf/lastIndexOf
第一个参数:找的内容
第二个参数:开始找的位置(indexOf)/找到哪终止(lastIndexOf)
一个参数的情况indexOf
var str = 'chengxiaohui';// 一个参数,在整个字符串中找var res = str.indexOf("x");// 返回值是找到的下标console.log(res);//5
lastIndexOf
var str = 'chengxiaohui';// 一个参数,在整个字符串中找最后一次出现的下标var res = str.lastIndexOf("h");// 返回值是找到的下标console.log(res);//9
两个参数的情况:indexOf
var str = 'chengxiaohui';// 从下标5开始找,找"h"var res = str.indexOf("h",5);// 返回值是找到的下标console.log(res);//9
lastIndexOf
var str = 'chengxiaohui';// 截止到下标5,找"h"var res = str.lastIndexOf("h",5);// 返回值是找到的下标console.log(res);//1
@4、slice
作用:查找字符串中特定位置的字符
参数:(n,m)
n:起始索引(包含), m结束索引(不包含)
返回值:查找的字符
- 从索引n(包括)开始查找到索引m(不包含)结束的字符
- 如果索引m不写,就是查找到最后
- 如果n只写一个0,或者不写就是复制一份
- 也可以为负数,转换成正数的规律:str.length+负的索引值 ``` var str=”zhufengpeixun”
str.slice(1,3) ===>”hu”
str.slice(0) ===>复制一份 str.slice() ===>复制一份
var res=str.slice(-3,-1); ===>“xu”
<a name="fzdCG"></a>#### @4.1、substring(n,m)> subString 和slice 基本都一样,唯一不同在于,subString 不支持负数索引,而slice支持负数索引<a name="K71QX"></a>#### @4.2、substr(n,m)- 作用:从索引n开始截取m个字符- 参数:n,m(个数)- 返回值:截取的字符串- 也支持从负索引开始
var str=”zhufengu”;
var res=str.substr(-3,2); ====>”ng”
<a name="jsEha"></a>
### @5、 toUpperCase()
toUpperCase(); 把字符串转换为大写
<a name="germD"></a>
### @6、 toLowerCase()
toLowerCase(); 把字符串转换为小写
<a name="0qAgX"></a>
### @7、 replace()
- 作用:把字符串中某部分的字符替换成另一部分字符
- 参数:(str1,str2)第一个参数代表的是要替换的字符或者是正则;第二个参数代表的是替换后的字符
- 返回值:替换后的字符串
var str=”zhufeng2018zhufeng2019zhufeng”;
var res=str.replace(“zhufeng”,”珠峰”);
//===>”珠峰2018zhufeng2019zhufeng”
var res=str.replace(/zhufeng/g,”珠峰”);
console.log(res)===>”珠峰2018珠峰2019珠峰”
<a name="GE2EC"></a>
### @8、split()
- 作用:按照指定的字符把字符串分割成数组
- 参数:分割符
- 返回值:分割后的数组
> split 和 join 对比记忆
var str=”1-2-3”;
var res=str.split(“-“);
console.log(res); ===> [“1”, “2”, “3”]
<a name="ZbWKB"></a>
## 二、练习题
<a name="l3UeW"></a>
### 1【时间字符串处理】把下面的字符串变成 "2019年08月18日 12时32分18秒"
var str=”2019-8-18 12:32:18”; //var res=str.split(/-| |:/g)
var time=str.split(“ “); console.log(time) //[“2019-8-18”, “12:32:18”] var timeLeft=time[0]; var timeRight=time[1]; var ary1=timeLeft.split(“-“); // [“2019”, “8”, “18”] var ary2=timeRight.split(“:”);// [“12”, “32”, “18”]
var result=ary1[0]+”年”+ary1[1]+”月”+ary1[2]+”日”+” “+ary2[0]+”时”+ary2[1]+”分”+ary2[2]+”秒” console.log(result) //“2019年8月18日 12时32分18秒”
/ 补零 /
function zero(num){ return num<10?”0”+num:num; } var ss=zero(11);
var result=zero(ary1[0])+”年”+zero(ary1[1])+”月”+zero(ary1[2])+”日”+” “+zero(ary2[0])+”时”+zero(ary2[1])+”分”+zero(ary2[2])+”秒”
//“2019年08月18日 12时32分18秒”
<a name="p70gP"></a>
### 2、queryURLParams 问号参数处理
/ var str =”https://www.baidu.com?name=zhufeng&age=10&id=14“; { name:”zhufeng”, age:10, id:14 } /
function urlParams(str){
var obj={};
var paramsStr=str.split("?")[1];
if(paramsStr){
//[name=zhufeng,age=10,id=14]
var paramsAry=paramsStr.split("&");
for(var i=0;i<paramsAry.length;i++){
//name=zhufeng
var item=paramsAry[i];
//[name,zhufeng]
var itemAry=item.split("=");
obj[itemAry[0]]=itemAry[1];
}
}
return obj;
}
var str ="https://www.baidu.com?name=zhufeng&age=10&id=14";
var result= urlParams(str);
<a name="YHq7w"></a>
## 三、Math常用的方法
> Math 称之为数学函数,它也是对象类型数据,主要是用来操作数字的
<a name="oFBpZ"></a>
### 1)Math.abs() 求绝对值
Math.abs(-1)
<a name="MFUdY"></a>
### 2)Math.ceil/Math.floor 向上取整,向下取整
向上取整,无论是正数还是负数,都取最大的值<br />向下取整,无论是正数还是负数,都取最小的值
Math.ceil(1.2) 2 Math.ceil(-1.6) -1
Math.floor(1.8) 1 Math.floor(-1.1) -2
<a name="H9tXq"></a>
### 3)Math.round() 四舍五入
正数的话,还是正常的,之前理解的,但是如果是负数,临界点必须大于5
Math.round(1.5) 2 Math.round(-1.5) -1 Math.round(-1.51) -2
<a name="49J78"></a>
### 4)Math.sqrt() 开平方
Math.sqrt(9) 3
<a name="cHNaA"></a>
### 5)Math.pow(n,m) 取幂
n的m次幂
Math.pow(3,2) ==> 9
<a name="AJ7bt"></a>
### 6)Math.PI
Math.PI ===>3.141592653589793
<a name="2mHQV"></a>
### 7)Math.max/Math.min 获取最大值和最小值
Math.max(1,2,3) Math.min(4,5,6)
<a name="CpmON"></a>
### 8)Math.random() 获取0~1 之间的随机数(大于等于0,小于1)
获取n 到m 之间的随机数:Math.random()*(m-n)+n;<br />// 获取10 到20 之间的随机数
Math.random()*10+10
[升级版2]<br />如果传的实参中包含字符串,就变成数字,如果是非有效数字,就直接略过
function fn(){ var total=null; for(var i=0;i<arguments.length;i++){ var item=Number(arguments[i]); isNaN(item)?null:total+=item } return total; }
[高级版3:es6]
```javascript
function fn(...arg){
return eval(arg.filter((item)=>!isNaN(item)).join("+"))
}
var res=fn(1,2,3,"3","3px");
