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);








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章