一、字符串操作方法
js中字符串方法操作有很多:concat、indexOf....
這里只要介紹兩種經常混淆的字符串截取方法:substring
、substr
二、從例子入手
let str = 'xiaobe'
//substring(start,end)
let str1 = str.substring(1,2);
//substr(start,length)
let str2 = str.substr(1,2);
console.log(str1); //i
console.log(str2); //ia
可以看到str1輸出的長度為1,str2輸出長度為2.
substring
概念:返回字符串的一個子串,傳入參數是起始位置和結束位置。
不取結束位置的字符
substr
返回字符串的一個子串,傳入參數是起始位置和長度
substr是根據長度取值,所以上面例子,兩個方法雖然參數相同,但是返回值不同
三、特殊情況
substring
- 僅有一個入參
let str = 'xiaobe'
let str1 = str.substring(1);
console.log(str1); //iaobe
當只有一個入參的時候,會自動輸出后面所有字符
- 入參的start>end
let str = 'xiaobe'
let str1 = str.substring(3,1);
console.log(str1); //ia
當讀取位置大於結束位置的時候,substring會自動調整位置
- 如果end為負數
let str = 'xiaobe'
let str1 = str.substring(3,-1);
console.log(str1); //xia
當end為負數的時候,substring會輸出start之前的字符
注意,start的最后一位依然是不會取到的
substr
- end為負數
let str = 'xiaobe'
let str1 = str.substring(3,-1);
console.log(str1); //
substr會輸出空。畢竟length為負數,自然不會輸出東西
四、擴展
其實substring和substr的關系與slice和splice關系相似
slice(start,end)
用法和substring類似,取值:[start,end)
//當end為負數時候
let str = 'xiaobe'
let str3 = str.slice(1,-1);
console.log(str3) //iaobe
substring會倒序輸出,而slice會輸出后續全部
slice方法可用於字符串和數組
下面介紹一個和slice方法很像的方法,但是這個方法僅僅使用於數組
splice(start,length,item1,item2....)
參數 | 描述 |
---|---|
start | 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置 |
length | 必需。要刪除的項目數量。如果設置為 0,則不會刪除項目。 |
item1...itemX | 可選。向數組添加的新項目。 |
splice會改變原數組 slice不會。
五、js字符串方法大全
- concat
將兩個或多個字符的文本組合起來,返回一個新的字符串。
var a = "hello";
var b = ",world";
var c = a.concat(b);
alert(c);
//c = "hello,world"
- indexOf
//返回字符串中一個子串第一處出現的索引(從左到右搜索)。如果沒有匹配項,返回 -1 。
var index1 = a.indexOf("l");
//index1 = 2
var index2 = a.indexOf("l",3);
//index2 = 3
- charAt
//返回指定位置的字符。
var get_char = a.charAt(0);
//get_char = "h"
lastIndexOf
返回字符串中一個子串最后一處出現的索引(從右到左搜索),如果沒有匹配項,返回 -1 。
var index1 = lastIndexOf('l');
//index1 = 3
var index2 = lastIndexOf('l',2)
//index2 = 2
- match
//檢查一個字符串匹配一個正則表達式內容,如果么有匹配返回 null。
var re = new RegExp(/^\w+$/);
var is_alpha1 = a.match(re);
//is_alpha1 = "hello"
var is_alpha2 = b.match(re);
//is_alpha2 = null
- substring
//返回字符串的一個子串,傳入參數是起始位置和結束位置。
var sub_string1 = a.substring(1);
//sub_string1 = "ello"
var sub_string2 = a.substring(1,4);
//sub_string2 = "ell"
- substr
//返回字符串的一個子串,傳入參數是起始位置和長度
var sub_string1 = a.substr(1);
//sub_string1 = "ello"
var sub_string2 = a.substr(1,4);
//sub_string2 = "ello"
- replace
//用來查找匹配一個正則表達式的字符串,然后使用新字符串代替匹配的字符串。
var result1 = a.replace(re,"Hello");
//result1 = "Hello"
var result2 = b.replace(re,"Hello");
//result2 = ",world"
- search
//執行一個正則表達式匹配查找。如果查找成功,返回字符串中匹配的索引值。否則返回 -1 。
var index1 = a.search(re);
//index1 = 0
var index2 = b.search(re);
//index2 = -1
- slice
//提取字符串的一部分,並返回一個新字符串(與 substring 相同)。
var sub_string1 = a.slice(1);
//sub_string1 = "ello"
var sub_string2 = a.slice(1,4);
//sub_string2 = "ell"
- split
通過將字符串划分成子串,將一個字符串做成一個字符串數組。
var arr1 = a.split("");
//arr1 = [h,e,l,l,o]
length
返回字符串的長度,所謂字符串的長度是指其包含的字符的個數。
var len = a.length();
//len = 5
- toLowerCase
//將整個字符串轉成小寫字母。
var lower_string = a.toLowerCase();
//lower_string = "hello"
toUpperCase
將整個字符串轉成大寫字母。
var upper_string = a.toUpperCase();
//upper_string = "HELLO"