不要再混淆js的substring和substr了!(附js所有字符串方法)


一、字符串操作方法

js中字符串方法操作有很多:concat、indexOf....
這里只要介紹兩種經常混淆的字符串截取方法:substringsubstr

二、從例子入手

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
  1. 僅有一個入參
let str = 'xiaobe'
let str1 = str.substring(1);
console.log(str1);  //iaobe

當只有一個入參的時候,會自動輸出后面所有字符

  1. 入參的start>end
let str = 'xiaobe'
let str1 = str.substring(3,1);
console.log(str1);  //ia

當讀取位置大於結束位置的時候,substring會自動調整位置

  1. 如果end為負數
let str = 'xiaobe'
let str1 = str.substring(3,-1);
console.log(str1);  //xia

當end為負數的時候,substring會輸出start之前的字符

注意,start的最后一位依然是不會取到的

substr
  1. 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字符串方法大全

轉載:https://www.cnblogs.com/l1pe1/p/6197371.html

  • 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"


免責聲明!

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



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