做者:Kai
譯者:前端小智
來源:dev
點贊再看,微信搜索
【大遷世界】關注這個沒有大廠背景,但有着一股向上積極心態人。本文
GitHub
https://github.com/qq44924588... 上已經收錄,文章的已分類,也整理了不少個人文檔,和教程資料。**
最近開源了一個 Vue 組件,還不夠完善,歡迎你們來一塊兒完善它,也但願你們能給個 star 支持一下,謝謝各位了。前端
github 地址:https://github.com/qq44924588...vue
咱們稱一個字符序列爲字符串。這幾乎是全部編程語言中都有的基本類型之一。這裏跟你們展現關於 JS 字符串的10
個很棒的技巧,你可能還不知道哦?git
JS 字符串容許簡單的重複,與純手工複製字符串不一樣,咱們可使用字符串的repeat
方法。github
const laughing = '小智'.repeat(3) consol.log(laughing) // "小智小智小智" const eightBits = '1'.repeat(8) console.log(eightBits) // "11111111"
有時,咱們但願字符串具備特定長度。 若是字符串過短,則須要填充剩餘空間,直到達到指定的長度爲止。 面試
過去,主要仍是使用庫 left-pad。 可是,今天咱們可使用padStart
和SpadEnd
方法,選擇哪一種方法取決因而在字符串的開頭仍是結尾填充字符串。正則表達式
// 在開頭添加 "0",直到字符串的長度爲 8。 const eightBits = '001'.padStart(8, '0') console.log(eightBits) // "00000001" //在末尾添加「 *」,直到字符串的長度爲5。 const anonymizedCode = "34".padEnd(5, "*") console.log(anonymizedCode) // "34***"
有多種方法能夠將字符串分割成字符數組,我更喜歡使用擴展操做符(...
):npm
const word = 'apple' const characters = [...word] console.log(characters) // ["a", "p", "p", "l", "e"]
注意,這並不老是像預期的那樣工做。有關更多信息,請參見下一個技巧。編程
可使用length
屬性。數組
const word = "apple"; console.log(word.length) // 5
但對於中文來講,這個方法就不太靠譜。瀏覽器
const word = "𩸽" console.log(word.length) // 2
日本漢字𩸽
返回length
爲2
,爲何? JS 將大多數字符表示爲16位代碼點。 可是,某些字符表示爲兩個(或更多)16 位代碼點,稱爲代理對。 若是使用的是length
屬性,JS 告訴你使用了多少代碼點。 所以,𩸽(hokke)
由兩個代碼點組成,返回錯誤的值。
那怎麼去判斷呢,使用解構操做符號(...
)
const word = "𩸽" const characters = [...word] console.log(characters.length) // 1
這種方法在大多數狀況下都有效,可是有一些極端狀況。 例如,若是使用表情符號,則有時此長度也是錯誤的。 若是真想計算字符正確長度,則必須將單詞分解爲 字素簇(Grapheme Clusters) ,這超出了本文的範圍,這裏就不在這說明。
反轉字符串中的字符是很容易的。只需組合擴展操做符(...
)、Array.reverse
方法和Array.join
方法。
const word = "apple" const reversedWord = [...word].reverse().join("") console.log(reversedWord) // "elppa"
和前面同樣,也有一些邊緣狀況。遇到邊緣的狀況就有須要首先將單詞拆分爲字素簇。
一個很是常見的操做是將字符串的第一個字母大寫。雖然許多編程語言都有一種本地方法來實現這一點,但 JS 須要作一些工做。
let word = 'apply' word = word[0].toUpperCase() + word.substr(1) console.log(word) // "Apple"
另外一種方法:
// This shows an alternative way let word = "apple"; // 使用擴展運算符(`...`)拆分爲字符 const characters = [...word]; characters[0] = characters[0].toUpperCase(); word = characters.join(""); console.log(word); // "Apple"
假設咱們要在分隔符上分割字符串,第一想到的就是使用split
方法,這點,智米們確定知道。 可是,有一點你們可能不知道,就是split
能夠同時拆分多個分隔符, 使用正則表達式就能夠實現:
// 用逗號(,)和分號(;)分開。 const list = "apples,bananas;cherries" const fruits = list.split(/[,;]/) console.log(fruits); // ["apples", "bananas", "cherries"]
字符串搜索是一項常見的任務。 在 JS 中,你可使用String.includes
方法輕鬆完成此操做。 不須要正則表達式。
const text = "Hello, world! My name is Kai!" console.log(text.includes("Kai")); // true
在字符串的開頭或結尾進行搜索,可使用String.startsWith
和String.endsWith
方法。
const text = "Hello, world! My name is Kai!" console.log(text.startsWith("Hello")); // true console.log(text.endsWith("world")); // false
有多種方法能夠替換全部出現的字符串。 可使用String.replace
方法和帶有全局標誌的正則表達式。 或者,可使用新的String.replaceAll
方法。 請注意,並不是在全部瀏覽器和Node.js 版本中均可用此新方法。
const text = "I like apples. You like apples." console.log(text.replace(/apples/g, "bananas")); // "I like bananas. You like bananas." console.log(text.replaceAll("apples", "bananas")); // "I lik
字符串是幾乎全部編程語言中最基本的數據類型之一。同時,它也是新開發人員學習的最先的數據類型之一。然而,尤爲是在JavaScript中,許多開發人員並不知道關於字符串的一些有趣的細節。但願此文對你有所幫助。
我是小智,咱們下期見。
代碼部署後可能存在的BUG無法實時知道,過後爲了解決這些BUG,花了大量的時間進行log 調試,這邊順便給你們推薦一個好用的BUG監控工具 Fundebug。
原文:https://dev.to/kais_blog/10-a...
文章每週持續更新,能夠微信搜索「 大遷世界 」第一時間閱讀和催更(比博客早一到兩篇喲),本文 GitHub https://github.com/qq449245884/xiaozhi 已經收錄,整理了不少個人文檔,歡迎Star和完善,你們面試能夠參照考點複習,另外關注公衆號,後臺回覆福利,便可看到福利,你懂的。