摘要:另外如果為負(fù)數(shù),則表示從字符串尾部開始算起。將要搜尋的子字符串。從當(dāng)前字符串的哪個(gè)索引位置開始搜尋子字符串默認(rèn)為。否則則會返回一個(gè)數(shù)組,數(shù)組中存放所有符合要求的子字符串,并且沒有和屬性。
原文鏈接
JavaScript 字符串用于存儲和處理文本。因此在編寫 JS 代碼之時(shí)她總?cè)缬半S形,在你處理用戶的輸入數(shù)據(jù)的時(shí)候,在讀取或設(shè)置 DOM 對象的屬性時(shí),在操作 Cookie 時(shí),在轉(zhuǎn)換各種不同 Date 時(shí),諸此等等,繁不能數(shù);而她那蠻多的 API 呵,總有些讓人不愿去記憶的沖動,既然用時(shí)常搜,倒不如爛筆頭一番,以作了結(jié),順道也體現(xiàn)下這博客存在的價(jià)值,由此就有了這篇紀(jì)要。
一、字符串截取 1、substring()str.substring(start, end)
substring()是最常用到的字符串截取方法,它可以接收兩個(gè)參數(shù),參數(shù)不能為負(fù)值,分別是要截取的開始位置和結(jié)束位置,并且返回一個(gè)新的字符串,其內(nèi)容是從start處到end-1處的所有字符。若結(jié)束參數(shù)end省略,則表示從start位置一直截取到最后。
let str = "www.jeffjade.com" console.log(str.substring(0,3)) // www console.log(str.substring(4)) // jeffjade.com console.log(str.substring(-2)) // www.jeffjade.com (傳負(fù)值則視為0)2、slice()
str.slice(start, end)
slice()方法與substring()方法非常類似,它傳入的兩個(gè)參數(shù)也分別對應(yīng)著開始位置和結(jié)束位置。而區(qū)別在于,slice()中的參數(shù)可以為負(fù)值,如果參數(shù)是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置。比如說,-1指字符串的最后一個(gè)字符。
let str = "www.jeffjade.com" console.log(str.slice(0, 3)) // www console.log(str.slice(-3, -1)) // co console.log(str.slice(1, -1)) // www.jeffjade.co console.log(str.slice(2, 1)) // "" (返回空字符串,start須小于end) console.log(str.slice(-3, 0)) // "" (返回空字符串,start須小于end)3、substr()
str.substr(start, length)
substr()方法可在字符串中抽取從start下標(biāo)開始的指定數(shù)目的字符。其返回值為一個(gè)字符串,包含從 str的start(包括start所指的字符)處開始的length個(gè)字符。如果沒有指定length,那么返回的字符串包含從start到str的結(jié)尾的字符。另外如果start為負(fù)數(shù),則表示從字符串尾部開始算起。
let str = "www.jeffjade.com" console.log(str.substr(1, 3)) // ww. console.log(str.substr(0)) // www.jeffjade.com console.log(str.substr(-3, 3)) // com console.log(str.substr(-1, 5)) // m (目標(biāo)長度較大的話,以實(shí)際截取的長度為準(zhǔn))4、split()
str.split([separator][, limit])
separator指定用來分割字符串的字符(串)。separator可以是一個(gè)字符串或正則表達(dá)式。如果忽略 separator,則返回整個(gè)字符串的數(shù)組形式。如果separator是一個(gè)空字符串,則str將會把原字符串中每個(gè)字符的數(shù)組形式返回。
limit是一個(gè)整數(shù),限定返回的分割片段數(shù)量。split方法仍然分割每一個(gè)匹配的separator,但是返回的數(shù)組只會截取最多limit個(gè)元素。
let str = "www.jeffjade.com" console.log(str.split(".")) // ["www", "jeffjade", "com"] console.log(str.split(".", 1)) // ["www"] console.log(str.split(".").join("")) // wwwjeffjadecom二、查找類方法 1、indexOf()
str.indexOf(searchValue, fromIndex)
indexOf()用來檢索指定的字符串值在字符串中首次出現(xiàn)的位置。它可以接收兩個(gè)參數(shù),searchValue表示要查找的子字符串,fromIndex表示查找的開始位置,省略的話則從開始位置進(jìn)行檢索。
let str = "www.jeffjade.com" console.log(str.indexOf(".")) // 3 console.log(str.indexOf(".", 1)) // 3 console.log(str.indexOf(".", 5)) // 12 console.log(str.indexOf(".", 13)) // -12、includes()(ES6)
includes()方法用于判斷一個(gè)字符串是否被包含在另一個(gè)字符串中,如果是返回true,否則返回false。
str.includes(searchString[, position])
·searchString·將要搜尋的子字符串。position可選。從當(dāng)前字符串的哪個(gè)索引位置開始搜尋子字符串;默認(rèn)為0。需要注意的是,includes()是區(qū)分大小寫的。
console.log("Blue Whale".includes("blue")); // false console.log("喬峰喬布斯喬幫主".includes("喬布斯")); // true3、lastIndexOf()
str.lastIndexOf(searchValue, fromIndex)
lastIndexOf()語法與indexOf()類似,它返回的是一個(gè)指定的子字符串值最后出現(xiàn)的位置,其檢索順序是從后向前。
let str = "www.jeffjade.com" console.log(str.lastIndexOf(".")) // 12 console.log(str.lastIndexOf(".", 1)) // -1 console.log(str.lastIndexOf(".", 5)) // 3 console.log(str.lastIndexOf(".", 12)) // 124、search()
str.search(substr)
str.search(regexp)
search()方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。它會返回第一個(gè)匹配的子字符串的起始位置,如果沒有匹配的,則返回-1。
let str = "www.jeffjade.com" console.log(str.search("w")) // 0 console.log(str.search(/j/g)) // 4 console.log(str.search(/./g)) // 35、match()
str.match(substr)
str.match(regexp)
match()方法可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配。
如果參數(shù)中傳入的是子字符串或是沒有進(jìn)行全局匹配的正則表達(dá)式,那么match()方法會從開始位置執(zhí)行一次匹配,如果沒有匹配到結(jié)果,則返回null。否則則會返回一個(gè)數(shù)組,該數(shù)組的第0個(gè)元素存放的是匹配文本,除此之外,返回的數(shù)組還含有兩個(gè)對象屬性index和input,分別表示匹配文本的起始字符索引和str的引用(即原字符串)。
let str = "#1a2b3c4d5e#"; console.log(str.match("A")); // 返回 null console.log(str.match("b")); // 返回 ["b", index: 4, input: "#1a2b3c4d5e#"] console.log(str.match(/b/)); // 返回 ["b", index: 4, input: "#1a2b3c4d5e#"]
如果參數(shù)傳入的是具有全局匹配的正則表達(dá)式,那么match()從開始位置進(jìn)行多次匹配,直到最后。如果沒有匹配到結(jié)果,則返回null。否則則會返回一個(gè)數(shù)組,數(shù)組中存放所有符合要求的子字符串,并且沒有index和input屬性。
let str = "#1a2b3c4d5e#" console.log(str.match(/h/g)) // 返回 null console.log(str.match(/d/g)) // 返回 ["1", "2", "3", "4", "5"]三、其他方法 1、replace()
str.replace(regexp/substr, replacement)
replace()方法用來進(jìn)行字符串替換操作,它可以接收兩個(gè)參數(shù),前者為被替換的子字符串(可以是正則),后者為用來替換的文本。
如果第一個(gè)參數(shù)傳入的是子字符串或是沒有進(jìn)行全局匹配的正則表達(dá)式,那么replace()方法將只進(jìn)行一次替換(即替換最前面的),返回經(jīng)過一次替換后的結(jié)果字符串。
let str = "www.jeffjade.com" console.log(str.replace("w", "a")) // aww.jeffjade.com console.log(str.replace(/w/, "A")) // Aww.jeffjade.com
如果第一個(gè)參數(shù)傳入的全局匹配的正則表達(dá)式,那么replace()將會對符合條件的子字符串進(jìn)行多次替換,最后返回經(jīng)過多次替換的結(jié)果字符串。
let str = "www.jeffjade.com" console.log(str.replace(/w/g, "A")) // AAA.jeffjade.com
replace(),這個(gè)方法挺有用。如果是在稍微擅長正則的情形下,用replace等方法,來截取字符串,也是一個(gè)挺不錯(cuò)的選擇;這對于某些場景下,可達(dá)到事半功倍之效,如下示例:
let str = "jeff@nice&jade" console.log(str.replace(/@[sS]*/g, "")) // "jeff" console.log(str.replace(/@[sS]*&/g, "")) // "jeffjade"2、toLowerCase()
str.toLowerCase()
toLowerCase()方法可以把字符串中的大寫字母轉(zhuǎn)換為小寫
let str = "www.jeffjade.com" console.log(str.toLowerCase()) // www.jeffjade.com3、toUpperCase()
str.toUpperCase()
toUpperCase()方法可以把字符串中的小寫字母轉(zhuǎn)換為大寫
let str = "www.jeffjade.com" console.log(str.toUpperCase()) // WWW.JEFFJADE.COM四、組合用法 1、字符串反轉(zhuǎn)
String.prototype.reverse = function () { return this.split("").reverse().join("") }2、去除空白行
String.prototype.removeBlankLines = function () { return this.replace(/( [s ]* * )/g, " ").replace(/^[ ]*|[ ]*$/g, "") }3、String轉(zhuǎn)化為數(shù)組
一維數(shù)組
let str= "陳寅恪,魯迅,錢鐘書,胡適,王國維,梁啟超,吳宓,季羨林" let arr= str.split(",") console.log(arr) // ["陳寅恪", "魯迅", "錢鐘書", "胡適", "王國維", "梁啟超", "吳宓", "季羨林"]
二維數(shù)組
String.prototype.removeBlankLines = function () { return this.replace(/( [s ]* * )/g, " ").replace(/^[ ]*|[ ]*$/g, "") } String.prototype.arr = function(firstSplit, secondSplit){ var contentStr = this.removeBlankLines(), contentStrArr = contentStr.split(firstSplit), resultArr = contentStrArr.map((element) => { return element.split(secondSplit) }) return resultArr } var str = ` 渺渺鐘聲出遠(yuǎn)方,依依林影萬鴉藏。 一生負(fù)氣成今日,四海無人對夕陽。 破碎山河迎勝利,殘馀歲月送凄涼。 松門松菊何年夢,且認(rèn)他鄉(xiāng)作故鄉(xiāng)。 ` console.log(str.arr(" ", ",")) // [["渺渺鐘聲出遠(yuǎn)方", "依依林影萬鴉藏。"], // ["一生負(fù)氣成今日", "四海無人對夕陽。"], // ["破碎山河迎勝利", "殘馀歲月送凄涼。"], // ["松門松菊何年夢", "且認(rèn)他鄉(xiāng)作故鄉(xiāng)。"]]4、startsWith()
if (typeof String.prototype.startsWith != "function") { String.prototype.startsWith = function (prefix){ return this.slice(0, prefix.length) === prefix } }5、endWith()
if (typeof String.prototype.endsWith != "function") { String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1 } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/81928.html
摘要:中函數(shù)是一等公民,所有的函數(shù)實(shí)際上是一個(gè)對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳遞參數(shù)一樣將函數(shù)傳遞給另一個(gè)函數(shù)。中函數(shù)沒有重載的概念,當(dāng)定義兩個(gè)同名函數(shù)的時(shí)候,前一個(gè)函數(shù)會被覆蓋掉,舉個(gè)栗子。 JavaScript中函數(shù)是一等公民,所有的函數(shù)實(shí)際上是一個(gè)Function對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳...
摘要:和方法大作用致相同,不同的方法接受的參數(shù),必須要明確所有要處理的參數(shù),也就是說,參數(shù)必須要逐個(gè)列舉,而方法可以選擇數(shù)組作為參數(shù),因此可以在具體的環(huán)境中,看看是選擇還是方法。 在函數(shù)內(nèi)部有著一個(gè)名叫arguments的類數(shù)組對象,內(nèi)部包含著傳入函數(shù)的所有參數(shù),在arguments對象中,有一個(gè)名叫callee的屬性,其作用可見下面這個(gè)階乘的栗子: function factorial(n...
摘要:極簡爬蟲攻防戰(zhàn)紀(jì)要爬蟲是構(gòu)建搜索引擎的基礎(chǔ)負(fù)責(zé)抓取網(wǎng)頁信息并對網(wǎng)頁識別分類及過濾。爬蟲方終于鎖定了第一場戰(zhàn)役的勝局由于斷崖式技術(shù)的出現(xiàn),反爬方在瀏覽器識別戰(zhàn)役上望風(fēng)披靡。經(jīng)過反爬方的精心運(yùn)作,逐漸有效削弱了敵方的攻勢。 極簡爬蟲攻防戰(zhàn)紀(jì)要 ? ??爬蟲是構(gòu)建搜索引擎的基礎(chǔ), 負(fù)責(zé)抓取網(wǎng)頁信息并對網(wǎng)頁識別、分類及過濾。我們熟識的電商、搜索、新聞及各大門戶網(wǎng)站都有強(qiáng)大的爬蟲集群在每...
摘要:更多資源請文章轉(zhuǎn)自月份前端資源分享的作用數(shù)組元素隨機(jī)化排序算法實(shí)現(xiàn)學(xué)習(xí)筆記數(shù)組隨機(jī)排序個(gè)變態(tài)題解析上個(gè)變態(tài)題解析下中的數(shù)字前端開發(fā)筆記本過目不忘正則表達(dá)式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛?cè)腴T的前端工程師的前后端交互指南物聯(lián)網(wǎng)世界的 更多資源請Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/jsfr...
摘要:流程創(chuàng)建一個(gè)文件獲取當(dāng)前的活動標(biāo)簽通過行列坐標(biāo)獲取單元格,并向其插入數(shù)據(jù)這里有種方式生成文件并輸入代碼預(yù)覽等價(jià)于除非是根目錄設(shè)置當(dāng)前腳本所在目錄實(shí)例化類獲取當(dāng)前活動標(biāo)簽填充數(shù)據(jù)方式一姓名性別年齡射可可男男男填充數(shù) 流程 創(chuàng)建一個(gè)excel文件 獲取當(dāng)前的活動sheet標(biāo)簽 通過行列坐標(biāo)獲取單元格,并向其插入數(shù)據(jù)(這里有2種方式) 生成文件并輸入showImg(https://seg...
閱讀 3486·2021-10-18 13:30
閱讀 2941·2021-10-09 09:44
閱讀 1964·2019-08-30 11:26
閱讀 2287·2019-08-29 13:17
閱讀 757·2019-08-29 12:17
閱讀 2246·2019-08-26 18:42
閱讀 471·2019-08-26 13:24
閱讀 2951·2019-08-26 11:39