- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- JavaScript字符串操作的四個(gè)實(shí)用技巧
字符串是編程世界最基本最重要的數據類(lèi)型之一,JavaScript 也不例外。JavaScript 字符串是不可變的,對于存儲可以由字符、數字和 Unicode 組成的文本很便捷。JavaScript 提供了許多內置函數,允許以不同的方式創(chuàng )建和操作字符串。在本文將分享一些優(yōu)雅的操作 JavaScript 字符串的技巧。
JavaScript中的 split() 方法使用指定的分隔符字符串將一個(gè) String 對象分割成子字符串數組,以一個(gè)指定的分割字串來(lái)決定每個(gè)拆分的位置。 有兩個(gè)可選參數(分隔符和可選限制計數)將字符串轉換為字符或子字符串數組,不設置分隔符將返回數組中的完整字符串。分隔符可以采用單個(gè)字符、字符串,甚至正則表達式。下面是使用正則表達式將使用逗號和空格拆分字符串的代碼:
const title = "4個(gè),JavaScript 字符串技巧"; console.log(title.split(/[\s+,/]+/)); // [ '4個(gè)', 'JavaScript', '字符串技巧' ] console.log(title.split(/[\s+,/]+/, 2)); // [ '4個(gè)', 'JavaScript' ]
通過(guò) split() 函數拆分的字符串可以通過(guò)簡(jiǎn)單地通過(guò)join("") 連接起來(lái)。
JSON 不是僅限 JavaScript 的數據類(lèi)型,并且廣泛用于前后端數據交互。JSON.stringify() 函數用于將對象轉換為 JSON 格式的字符串。通常,只需將對象作為參數即可,如下所示:
const article = { title: "JavaScript 字符串技巧", view: 30000, comments: null, content: undefined, }; const strArticle = JSON.stringify(article); console.log(strArticle); // {"title":"JavaScript 字符串技巧","view":30000,"comments":null}
從上面的代碼可以看到,在 stringify 中會(huì )過(guò)濾掉 undefined 的值,但 null 值不會(huì )。
JSON.stringify() 可以接受兩個(gè)可選參數,第二個(gè)參數是一個(gè)替換器,可以在其中指定要打印的鍵的數組或清除它們的函數。如下代碼:
console.log(JSON.stringify(article, ["title", "comments"])); // {"title":"JavaScript 字符串技巧","comments":null} console.log(JSON.stringify(article, [])); // {}
對于一個(gè)巨大的 JSON,傳遞一個(gè)長(cháng)數組可能影響可讀性及效率。因此,可以設置替換函數并為要跳過(guò)的鍵返回 undefined ,如下代碼:
const result = JSON.stringify(article, (key, value) => key === "title" ? undefined : value ); console.log(result); // {"view":30000,"comments":null}
JSON.stringify() 的第三個(gè)參數通過(guò)指定縮進(jìn)(在嵌套塊中很有用)來(lái)格式化 JSON,可以傳遞一個(gè)數字來(lái)設置縮進(jìn)間距,甚至可以傳遞一個(gè)字符串來(lái)替換空格。如下代碼:
console.log(JSON.stringify(article, ["title"], "\t"));
輸出的格式如下:
{
"title": "JavaScript 字符串技巧"
}
還有一個(gè) JSON.parse() 函數,它接受一個(gè) JSON 字符串并將其轉換為一個(gè) JavaScript 對象。它還接受一個(gè) reviver 函數,可以在返回值之前攔截對象屬性并修改屬性值。
const reviver = (key, value) => (key === "view" ? 0 : value); var jsonString = JSON.stringify(article); var jsonObj = JSON.parse(jsonString, reviver); console.log(jsonObj); // { title: 'JavaScript 字符串技巧', view: 0, comments: null }
在 JavaScript 中有三種創(chuàng )建字符串的方式,可以使用單引號 '' 、雙引號 "" 或反引號(鍵盤(pán)的左上方, 1 的左邊按鍵)。
const countries1 = "China"; const countries2 = "China"; const countries3 = `China`;
前兩種創(chuàng )建方式基本相同,并且可以混合和匹配以連接或添加帶引號的字符串(通過(guò)使用相反的語(yǔ)法風(fēng)格),而反引號可以對字符串進(jìn)行花哨而強大的操作。
反引號也稱(chēng)為模板字面量,反引號在創(chuàng )建多行字符串和嵌入表達式時(shí)很方便。下面是如何在 JavaScript 中使用字符串插值創(chuàng )建多行字符串的代碼:
const year = "2021"; const month = 7; const day = 2; const detail = `今天是${year}年${month}月${day}日, 是個(gè)不錯的日子!`; console.log(detail);
輸出的結果也換行了,如下:
今天是2021年7月2日,
是個(gè)不錯的日子!
除了字符串字面量,在 ${} 中允許任何有效的表達式,它可以是一個(gè)函數調用或表達式,甚至是一個(gè)嵌套模板。
標記模板是模板字面量的一種高級形式,它允許使用一個(gè)函數來(lái)解析模板字面量,其中內嵌的表達式是參數。如下代碼:
const title = "JavaScript 字符串技巧"; const view = 30000; const detail = (text, titleExp, viewExp) => { const [string1, string2, string3] = [...text]; return `${string1}${titleExp}${string2}${viewExp}${string3}`; }; const intro = detail`本文的標題是《${title}》,當前閱讀量是: ${view}`; console.log(intro); // 文的標題是《JavaScript 字符串技巧》,當前閱讀量是:30000
查找 JavaScript 字符串中是否存在子字符串時(shí)間容易的事情,在 ES6 中,只需要使用 includes 函數。
但需要驗證字符串是否存于數據中,主要數組中其中一項包含就返回 true ,如果都不包含返回 false,因此需要使用 some 函數與includes 一起使用,如下代碼:
const arrayTitles = ["Javascript", "EScript", "Golang"]; const hasText = (array, findText) => array.some((item) => item.includes(findText)); console.log(hasText(arrayTitles, "script")); // true console.log(hasText(arrayTitles, "php")); // false
JavaScript 字符串操作是項目中常見(jiàn)的操作,上面4個(gè)技巧值得學(xué)習并應用到實(shí)際開(kāi)發(fā)中。
到此這篇關(guān)于JavaScript字符串操作的四個(gè)實(shí)用技巧的文章就介紹到這了,更多相關(guān)JS字符串操作技巧內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站