js字符串操作方法


提示:ECMAScript 中的字符串是不可變的,字符串不能更改,只能替換。所以以下操作方法均不能改變原字符串,下面的講解中將不對源字符串做打印觀察,只打印觀察新字符串的值。

1. length

獲取字符串的長度

var browserType = 'mozilla';
browserType.length;//7

2. str[idx]、charAt()、charCodeAt()

str[idx] 屬性訪問
charAt() 方法返回字符串中指定下標(位置)的字符串
charCodeAt() 方法返回字符串中指定索引的字符 unicode 編碼

browserType[0];  //m
browserType.charAt(0);  //m
browserType[-2];  //undefined
browserType.charAt(-2);  //""

注意:小標是從0開始,不是1!

使用屬性訪問有點不太靠譜:

  • 不適用 Internet Explorer 7 或更早的版本
  • 它讓字符串看起來像是數組(其實並不是)
  • 如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串。
  • 它是只讀的。str[0] = "A" 不會產生錯誤(但也不會工作!)

例如:

var str = "HELLO WORLD";
str[0] = "A";             // 不產生錯誤,但不會工作
str[0];                   // 返回 H

3. indexOf() 、 lastIndexOf()

indexOf()返回字符串中一個子串第一處出現的索引(從左到右搜索)。如果沒有匹配項,返回 -1 。

'mozilla'.indexOf('zill');  //2

lastIndexOf()返回指定文本在字符串中最后一次出現的索引,如果沒有匹配項,返回 -1

var str = "abcdarf";
var pos = str.lastIndexOf("a");  //4

兩種方法都接受作為檢索起始位置的第二個參數。

var str = "abcdarf";
var pos = str.indexOf("a");  //0
var pos = str.indexOf("a",1);  //4

lastIndexOf() 方法向后進行檢索(從尾到頭),這意味着:假如第二個參數是4,則從位置4開始往左檢索,直到字符串的起點。(個人的理解:lastIndexOf() 檢索的本質是從右往左檢索,返回該字符串第一次出現的位置,這里提到的下標位置均為從左往右的下標位置)

var str = "bcda23a";
str.lastIndexOf("a");  //6
str.lastIndexOf("a",1);  //-1
str.lastIndexOf("a",4);  //3

search() 方法搜索特定值的字符串,並返回匹配的位置:

var str = "bcda23daef";
str.search('a');  //3
str.earch(/da/ig);  //2

與indexOf的區別:
search() 方法無法設置第二個開始位置參數。
indexOf() 方法無法設置更強大的搜索值(正則表達式)。

5. slice()

提取字符串的某個部分,並在新字符串中返回被提取的部分。
slice(a,b) //獲取范圍[a,b)
該方法設置兩個參數:起始索引(開始位置 ),終止索引(結束位置)。可接受負的索引

var str = "Apple, Banana, Mango";
var res = str.slice(7,13);  //res "Banana"

如果某個參數為負,則從字符串的結尾開始計數。

var str = "Apple, Banana, Mango";
str.slice(-14,-7);  //打印結果: " Banana"
str.slice(5,-7);  // 打印結果:", Banana"
//str不會改變

如果省略第二個參數,則該方法將裁剪字符串的剩余部分:

var str = "Apple, Banana, Mango";
str.slice(-5);  //"Mango"
str.slice(7);  //"Banana, Mango"

提示:負值位置不適用 Internet Explorer 8 及其更早版本。

6. substring()

substring(start,end); //截取字符串 范圍是[start, end)
該方法設置兩個參數:起始索引(開始位置),終止索引(結束位置)。無法接受負的索引。

var str = "Apple, Banana, Mango";
str.substring(7,13);  //"Banana"

如果省略第二個參數,則該 substring() 將裁剪字符串的剩余部分。

var  str =  'Hello world!';
str.substring(3);   //"lo world!"

7. substr()

substr(a,b) //截取字符串,范圍是從下標為a的字符開始,截取長度為b
該方法設置兩個參數:起始索引(開始位置 可為負數),截取的長度。

var str = "Hello world!";
str.subst(3,4);  //"lo w"

如果省略第二個參數,則該 substr() 將裁剪字符串的剩余部分。

var str = "Hello world!";
str.subst(3);  //"lo world!"

8. replace()

用另一個值替換在字符串中指定的值,不會改變調用它的字符串。它返回的是新字符串。默認地,replace() 只替換首個匹配,並對大小寫敏感:

var str = "Hello world! hello";
var res = str.replace('llo','*');  // "He* world! hello"
var str = "HeLlo world! hello";
var res = str.replace('llo','*');  // "HeLlo world! he*"

如需執行大小寫不敏感的替換,請使用正則表達式 /i(大小寫不敏感),如需替換所有匹配,請使用正則表達式的 g 標志(用於全局搜索):

var str = "HeLlo world! hello";
str.replace(/llo/ig,'*');  //"He* world! he*"

9. toUpperCase()、toLowerCase()

toUpperCase() 把字符串轉換為大寫;toLowerCase() 把字符串轉換為小寫。

var str= "Hello World!"; 
str.toUpperCase();   //"HELLO WORLD!"
str.toLowerCase();  //"hello world!"

10. concat()

concat() 連接兩個或多個字符串。

var str1 = "Hello";
var str2= "World";
var str3= str1.concat(str2);  //  "HelloWorld"
var str4 = str1.concat(" ",str2,"!");  //"Hello World!"

11. trim()

trim() 方法刪除字符串兩端的空白符。

var str = "       Hello World!        ";
str.trim();  //  "Hello World!"

警告:Internet Explorer 8 或更低版本不支持 trim() 方法。

12. split()

可以通過 split() 將字符串轉換為數組。可接受正則匹配。

var str = "a,fr,34, 2019/06/28,t";
str.split('');//["a", ",", "f", "r", ",", "3", "4", ",", " ", "2", "0", "1", "9", "/", "0", "6", "/", "2", "8", ",", "t"]
str.split(',');//["a", "fr", "34", " 2019/06/28", "t"]
str.split('/');//["a,fr,34, 2019", "06", "28,t"]
str.split(' ');//["a,fr,34,", "2019/06/28,t"]
str.split(/,|\/|\s/g);//["a", "fr", "34", "", "2019", "06", "28", "t"]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM