在JS中所有用單引號或者雙引號包起來的都是字符串,每個字符串都是有零到多個字符組成啡彬。
上一篇介紹了數(shù)組中的常方法羹与,可以與字符串中的方法進行對比
關于字符串中常用的方法
字符串是基本數(shù)據(jù)類型,字符串的每次操作都是對值的直接進行操作庶灿,和數(shù)組不一樣纵搁,數(shù)組是基于空間地址來操作的,所以不存在原有字符串是否改變的說法往踢,肯定都是不變的腾誉。
charAt/charCodeAt
作用:charCodeAt不僅僅獲取字符,它獲取的是字符對應 的Unicode編碼值(ASC II碼值)
參數(shù):索引
返回:字符或者對應的編碼
var str = "xiaoKge_2";
console.log(str.charAt(0)); //'x' 獲取索引為0的字符
通過charAt獲取和直接操作索引方式獲取的區(qū)別:
- 當索引不存在的時候峻呕,str[x]獲得的結果是undefined利职,運行的機制和對象是一樣的,而charAt(x)獲取的結果是空字符串瘦癌。
charCodeAt返回的是字符串對應的編碼
fromCharCode返回的是編碼對應的字符
console.log(str.charCodeAt(0)); //120
//返回的是字符對應的編碼
console.log(String.fromCharCode(120)); //'x'
slice
作用: str.slice(n,m) 從索引n開始找到索引為m處(不 包含m)猪贪,把找到的字符當做新字符串返回。
和數(shù)組中的slice操作是一樣的:不寫m是查找到字符串的末尾讯私,n/m都不寫是字符串的克隆热押,,支持負數(shù)索引斤寇,用字符串的總長度+負數(shù)索引做運算
var str = "xiaoKge_2";
console.log(str.slice(2,7));//aoKge
console.log(str.slice()); //xiaoKge_2
console.log(str.slice(-3,-1)); //e_
substring
和slice語法一模一樣桶癣,唯一的區(qū)別在于:slice支持負數(shù)索引,而substring不支持負數(shù)索引娘锁。
substr
字符串截取的方法牙寞,用法是:str.substr(n,m),從索引n開始截取m個字符。
var str = "xiaoKge_2";
console.log(str.substr(2,5)); //aoKge
console.log(str.substr(2)); //aoKge_2
console.log(str.substr(-3,1)); //e
split
和數(shù)組中的join相對應莫秆,數(shù)組中的join是把數(shù)組一項按照指定的連接符變?yōu)樽址淙福鴖plit是把字符串按照指定的分隔符,拆分成數(shù)組中每一項镊屎。
var ary = [12,13,14];
var str = ary.join("+");
console.log(str); //12+13+14
console.log(str.split('+')); // ["12", "13", "14"]
replace
作用:替換字符串中的原有字符
參數(shù):原有字符惹挟,要替換的新字符
返回值:返回替換后的字符串
var str = "xiaoKge_2";
console.log(str.replace('xiao','小'));//小Kge_2xiao
在不適用正則的情況下,每執(zhí)行一次只能替換最前的的一個杯道。
console.log(str.replace(/xiao/g,'小')); //小Kge_2小
項目中的需求案例
1.時間字符串格式化
有一個時間字符串 “2018--4--4 16:26:8” ,我們想 基于這個字符串獲取到 “04月04日 16時26分”
//04月04日 16時26分
var str = "2018--4--4 16:26:8";
var ary = str.split(' '); //["2018--4--4", "16:26:8"]
var aryLeft = ary[0].split('-');
var aryRight = ary[1].split(':');
var month = addZero(aryLeft[1]);
var day = addZero(aryLeft[2]);
var hour = addZero(aryRight[0]);
var minute = addZero(aryRight[1]);
var result = month + '月' + day + '日' + ' ' + hour + '時' + minute + '分';
console.log(result); //04月-4日 16時26分
function addZero(val) {
return val < 10 ? '0' + val : val;
}
URL地址問號傳參解析
有一個URL地 址“http://www.zhufengpeixun.cn/stu/? lx=1&name=AA&sex=man” 地址問號后面的內 容是我們需要解析出來的參數(shù)信息
{
lx:1,
name:’AA’,
sex:’man’
}
// 獲取“责蝠?” 和 “#”字符所在的位置
var indexASK = str.indexOf('?'),
indexWELL = str.indexOf('#');
//但是#號可能沒有
if(indexWELL > -1) {
//存在#號党巾,獲取到#號位置
str = str.substring(indexASK+1,indexWELL);
console.log(str);
}else {
//不存在#號,就直接獲取到字符串末尾
str = str.substring(indexASK + 1); //不指定第二個參數(shù)就直接獲取到字符串末尾
// 或者使用subStr() 和上面的區(qū)別是第二個參數(shù)是個數(shù)不是位置
// str = str.substr(indexASK+1);
console.log(str);
}
var ary = str.split('&');
//定義一個對象來存
var obj = {};
console.log(ary); //["lx=1", "name=AA", "sex=man"]
for(var i=0;i<ary.length;i++) {
var itemAry = ary[i].split('=');
var key = itemAry[0];
var value = itemAry[1];
obj[key] = value;
}
console.log(obj); //{lx: "1", name: "AA", sex: "man"}