作為JavaScript基礎數據類型,字符串具有一些很強大的方法,在平時的工作中用到的地方也特別的多,很多時候因為不熟悉某個字符串的方法,往往走了很多彎路,所以整理了15個常用又高效的字符串方法,來一起看看這15個提升工作效率的方法吧!
說明: 去除字符串兩邊的空白。
需求場景: 用戶搜索前去除輸入的首尾空格。
用法: string.trim()
例子:
let str = " 白色不白,黑色不黑,我...我不喜歡你 "
let result = str.trim()
console.log(result); // 控制臺列印:"白色不白,黑色不黑,我...我不喜歡你"
複製代碼
說明: 字符串替換字符還是replace()最強大~默認替換第一個符合條件的字符串,也可用正則做全局匹配
需求場景: 字符串的替換,關鍵詞的屏蔽隱藏等
**用法:** string.replace(searchvalue,newvalue)
例子:
let str = "你知道嗎?世界上有60億人,宇宙有60萬億小行星,你比小行星還要珍貴一萬倍"
let result1 = str.replace("億","個")
let result2 = str.replace(/億/g,"個")
console.log(result1) // 控制臺列印:"你知道嗎?世界上有60個人,宇宙有60萬億小行星,你比小行星還要珍貴一萬倍"
console.log(result2) // 控制臺列印:"你知道嗎?世界上有60個人,宇宙有60萬個小行星,你比小行星還要珍貴一萬倍"
複製代碼
說明: 連接兩個或更多字符串,並返回新的字符串。(悄悄告訴你,數組也可以使用哦~)
需求場景: 字符串合併展示。
用法: string.concat()
例子:
let str1 = "我有很多好聽的情話,"
let str2 = "可面對你都不敢說不出口。"
let result = str1.concat(str2)
console.log(result) // 控制臺列印:"我有很多好聽的情話,可面對你都不敢說不出口。"
複製代碼
說明: 把字符串通過特定字符分割為字符串數組,split還可以使用正則表達式實現拆分多個分隔符。
需求場景: 字符串轉數組進行遍歷等操作。
用法1: string.split()
用法2: string.split(/[*]/)
例子:
let str = "張三,李四;王五"
let result1 = str.split(',')
let result2 = str.split(/[,;]/)
console.log(result1) // 控制臺列印:["張三", "李四;王五"]
console.log(result2) // 控制臺列印:["張三", "李四", "王五"]
複製代碼
**說明:** 說起來,這並不是字符串的方法,主要是我覺得ES6語法中的擴展操作符的...語法是轉數組最簡潔的方法。它和split()區別在於:...語法不根據特定字符切割,而是把每個字符都當作單獨的元素添加到數組中。
**需求場景:** 字符串全部分割成字符數組。
用法: [...string]
例子:
let str = '這是一個字符串string'
let arr = [...str]
console.log(arr) // 控制臺列印:["這", "是", "一", "個", "字", "符", "串", "s", "t", "r", "i", "n", "g"]
複製代碼
說明: 這個也不能算是字符串方法,但是好用。本質上還是轉成數組,數組反轉之後,再拼接成字符串。
需求場景: 將當前字符串反轉輸出
用法: [...string].reverse().join("")
例子:
let str = "兩極反轉,龍捲風摧毀停車場!"
let result = [...str].reverse().join("")
console.log(result) // 控制臺列印:!場車停毀摧風卷龍,轉反極兩
複製代碼
說明: 複製字符串指定次數,並將它們連接在一起返回。
需求場景: 字符串需要進行 n 次自動複製。
用法: string.repeat(n)
例子:
let str1 = '複製'
let result = str1.repeat(2)
consol.log(result) // 控制臺列印:複製複製
let str2 = '10'
let result = str2.repeat(5)
console.log(result) // 控制臺列印:1010101010
複製代碼
**說明:**檢索字符串中指定的或與正則表達式相匹配的首個子字符串。如果匹配到了則返回匹配字符串首字符下標,如果沒有匹配到,則返回 -1。
需求場景: 字符串內關鍵字的搜索查詢定位。
用法: string.search(searchvalue)。
例子:
let str = "今天的夜色很好,月亮也很圓,唯一遺憾的是,我不是從你的窗子裡看到的月亮。"
let result1 = str.search("月亮")
let result2 = str.search(/[,。]/)
console.log(result1) // 控制臺列印:8
console.log(result2) // 控制臺列印:7
複製代碼
說明: includes()可選擇從某處下標之後開始查找,返回true或false。第二個參數代表從某下標處開始查找,忽略則代表從下標0開始查找。
它和search()區別在於:search()返回指定下標, includes()返回true或false;search()不能從指定下標開始查找, includes()可以從指定下標處開始查找。
需求場景: 判斷字符串中是否有不合法字符等
用法: string.includes(searchvalue, start)
例子:
let str = "沒有夏日的的涼風,也沒有冬日的暖陽,它們只是恰好出現在了合適的時間罷了"
let result1 = str.includes("冬日")
let result2 = str.includes("冬日",20)
console.log(result1); // 控制臺列印:true
console.log(result2); // 控制臺列印:false
複製代碼
說明:
indexOf() 方法可返回某個指定的字符串值首次出現的位置,即從前向後搜索。如果指定第二個參數 start,則在字符串中的指定位置開始從前向後搜索。
lastIndexOf() 方法可返回某個指定的字符串值最後出現的位置,即從後向前搜索。如果指定第二個參數 start,則在字符串中的指定位置從後向前搜索。
需求場景: 關鍵字首次或最後一次出現的位置
用法1: string.indexOf(searchvalue,start) 指定的字符串值首次出現的位置
用法2: string.lastIndexOf(searchvalue,start) 指定的字符串值最後出現的位置
例子:
let str = "你來人間一趟,你要看看太陽。和你的心上人一起走在街上,了解她,也要了解太陽"
let result1 = str.indexOf("太陽")
let result2 = str.indexOf("太陽",10) // 從10下標的字符開始查找"太陽",查找範圍是"太陽。和你的心上人一起走在街上,了解她,也要了解太陽",下標還是相對原字符串而言的,因此返回11。
let result3 = str.lastIndexOf("太陽")
let result4 = str.lastIndexOf("太陽",10) // 0-10下標的字符串為"你來人間一趟,你要看看",沒有"太陽",返回-1
console.log(result1) // 控制臺列印:11
console.log(result2) // 控制臺列印:11
console.log(result3) // 控制臺列印:35
console.log(result4) // 控制臺列印:-1
複製代碼
說明: 字符串大小寫之間的轉換
需求場景: 網址,英文名,首字母大寫等要求。
用法1: string.toLowerCase() 轉成小寫字母
用法2: string.toUpperCase() 轉成大寫字母
例子:
let str = "For you, A thousand times over"
let result1 = str.toLowerCase()
let result2 = str.toUpperCase()
console.log(result1) // 控制臺列印:"for you, a thousand times over"
console.log(result2) // 控制臺列印:"FOR YOU, A THOUSAND TIMES OVER"
複製代碼
說明: 字符串填充指定字符到指定長度
需求場景: 字符串長度不足,需要補充至指定長度n,如年月日,隱藏手機號,隱藏暱稱等。
用法1: string.padStart(n,'補充內容') 從字符串前添加補充內容。
用法2: string.padEnd (n,'補充內容') 從字符串後添加補充內容。
例子:
// 在字符串前補充"-",直到字符串的長度為5
let str1 = '預備開始'
let result = str1.padStart(5, '-')
console.log(result) // 控制臺列印:"---預備開始"
//在末尾添加"*",直到字符串的長度為11
let str2 = "184"
let result = str2.padEnd(11, "*")
console.log(result) // 控制臺列印:"184********"
複製代碼
說明: 用於檢測字符串是否以指定的子字符串開始。如果是以指定的子字符串開頭返回 true,否則 false。startsWith()、endsWith()方法區分大小寫。第二個參數代表從某下標處開始判斷是否以特定字符(串)開頭或結尾,忽略則startsWith()從下標0開始檢測,endsWith()從字符串最後一位下標開始檢測。
值得注意的是:
當startsWith() 的第二個參數如果超出了當前字符串的最大長度,依舊生效,返回false。
當endsWith() 的第二個參數如果超出了當前字符串的最大長度,會不生效,改為從字符串最後一位下標開始檢測。
需求場景: 判斷字符串是否以指定字符開頭或結尾
用法1: string.startsWith(searchvalue, start)
用法2: string.endsWith(searchvalue, start)
例子:
let str = "過去的時候,我們相視一笑,就已過了大半輩子"
let result1 = str.startsWith("過去")
let result2 = str.startsWith("過去",10)
let result3 = str.endsWith("半輩子")
let result4 = str.endsWith("半輩子",20)
console.log(result1); // 控制臺列印:true
console.log(result2); // 控制臺列印:false
console.log(result3); // 控制臺列印:true
console.log(result4); // 控制臺列印:false
複製代碼
說明: length屬性不僅是數組的屬性,同時偽數組,字符串都有length屬性。但是遇到某些生僻字如「𩸽」或者表情符號「🙂」,它們的length為2,這時候返回的length可能不是我們真正想要的。這是因為js字符串是由16位的代碼單元組成,而不是由Unicode代碼點組成。同時js使用兩個代碼單元表示216及其以上的Unicode代碼點。這兩個代碼單元被稱為代理對。一個代碼單元被默認為1個長度單位,像「𩸽」或者「🙂」是由兩個代碼單元組成的代理對,因此它們的length為2。
需求場景: 求出當前字符串長度
用法: string.length
例子:
let str = "相約白頭偕老,你卻悄悄禿了頭"
let result = str.length
console.log(result) // 控制臺列印:14
複製代碼
說明: 字符串截取和拼接是字符串最常用也是最易錯的方法。主要原因是 substr() 、 slice() 和 substring()的區別有很多小夥伴還不太明白。
substr():
參數一(必須):一個整數,要開始截取字符的下標,如為負則代表從尾部開始截取。參數二(可選):一個整數,要截取字符的數量。如果省略該參數,則默認為string.length,即當前字符串的長度。
slice() :
參數一(必須):一個整數,要開始截取字符的下標,如為負則代表從尾部開始截取。參數二(可選):一個整數,要結束截取字符的下標,如為負則代表從尾部截取多少個字符。如果省略該參數,則默認為string.length,即當前字符串的長度。
substring() :
參數一(必須):一個非負的整數,要開始截取字符的下標。參數二(可選):一個非負的整數,要結束截取字符的下標。如果省略該參數,則默認為string.length,即當前字符串的長度。
需求場景: 截取指定下標指定長度的字符串
用法1: string.substr(start,length)
用法2: string.slice(start,end)
用法3: string.substring(start,end)
例子:
let str = '0123456789'
let result1 = str.substr(2,5) // 從下標2開始截取,截取5位
let result2 = str.slice(2,5) // 從下標2開始截取,截取到下標5(不含下標5)
let result3 = str.substring(2,5) // 從下標2開始截取,截取到下標5(不含下標5)
console.log(result1) // 控制臺列印:23456
console.log(result2) // 控制臺列印:234
console.log(result3) // 控制臺列印:234
複製代碼
這就是關於字符串常用的15個方法詳細說明,可在我們工作中的很多時候,可能並不能很好的使用它們。大多是因為不夠熟練,看一遍容易忘記,所以我們要時常翻一翻這些常用的方法,也許就能節省你工作中幾十分鐘~ 為摸魚大業添磚加瓦 ~