前端開發(fā),字符串方法總結(jié)

本篇文章在工作中持續(xù)總結(jié),方法有簡單的,有實用的,但都是有效的,都是為了更好的開發(fā),希望對各位讀者有所幫助,不妨點贊,關(guān)注,收藏下,就當(dāng)作是個字典表,方便隨時翻閱。如有筆誤,還請評論中指出,如有疑問可在下方評論。有其他好的方法,還希望在評論中多多交流,筆者也會持續(xù)增加新的方法。

所含方法

  • replace
  • split
  • padStart
  • padEnd
  • sbustr(start, len)
  • substring(start, end)
  • charAt()
  • charCodeAt()
  • indexOf
  • trim
  • repeat
  • includes
  • toUpperCase
  • toLowerCase

replace()

基本用法

js中字符串的replace方法用于替換字符串中指定的字符,基本用法如下:

str.replace(regexp|substr, newSubStr|function)

let str = 'Tom is my best friend.'

let targ = str.replace('Tom', 'money')
console.log(targ) // 'money is my best friend'

然而,當(dāng)要替換的字符有多個時,上面方式往往只會替換第一個匹配到的字符。

let str = 'my friend is not your friend'

let targe = str.replace('friend', 'money')
console.log(targe) // 'my money is not your friend'

因此要全局替換時,需要使用正則

let str = 'my friend is not your friend'
// ①
let targe = str.replace(new RegExp('friend', 'g'), 'money')
// ②簡寫
let targe = str.replace(/friend/g, 'money')
console.log(targe) // 'my money is not your money'

split()

split根據(jù)傳入的參數(shù)拆分字符串,并將拆分后的結(jié)果以數(shù)組的形式返回。簡單使用:

let re = '賺,錢'.split(',')
console.log(re)  // [ '賺', '錢' ]

關(guān)于split的參數(shù)形式有很多,可以不傳,傳空,傳正則:

var names = "Harry Trump ;Fred Barney";
var re = /\s*(?:;|$)\s*/;
var nameList = names.split(re);
console.log(nameList); // [ 'Harry Trump', 'Fred Barney' ]

以及經(jīng)典的字符串逆序,也是使用了split:

const str = 'abcd';
const strReverse = str.split('').reverse().join(''); // 'dcba'

關(guān)于第二個參數(shù),限制返回值中分割元素的數(shù)量:

let re = 'abcd'.split('', 2) 
console.log(re) // ['a', 'b']

padStart() / padEnd()

關(guān)于padStart/padEnd為ECMAScript 2017(ES8)的新增特性,分別為在字符串的前面和后面填充字符串到指定長度

let str = '10'
let re = str.padStart(4,0)
console.log(re, str) // 0010, 10

該方法返回一個新的字符串,原字符串不變。padEnd與之類似

let str = '10'
let re = str.padEnd(4,1)
console.log(re, str) // 1011, 10

關(guān)于參數(shù)的說明

  • 第一個參數(shù)指定修改后的字符串長度,第二個參數(shù)為填充內(nèi)容單位。
  • 當(dāng)?shù)谝粋€參數(shù)值小于字符串長度時,字符串不作修改
let str = '1010'
console.log(str.padEnd(3,1)) // 1010
  • 對于不支持該方法的編譯環(huán)境,可以通過以下代碼手動實現(xiàn):
if (!String.prototype.padStart) {
    String.prototype.padStart = function padStart(targetLength,padString) {
        targetLength = targetLength>>0; //floor if number or convert non-number to 0;
        padString = String((typeof padString !== 'undefined' ? padString : ' '));
        if (this.length > targetLength) {
            return String(this);
        }
        else {
            targetLength = targetLength-this.length;
            if (targetLength > padString.length) {
                padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
            }
            return padString.slice(0,targetLength) + String(this);
        }
    };
}

來源于MDN

sbustr() / substring()

描述:sbustr與substring比較類似

  • 相同點:當(dāng)兩者都是一個參數(shù)的時候,返回值為字符串該參數(shù)位置到末尾的字符串
let str = 'eqwsvwefrw12312fewf'
let sbustrStr = str.sbustr(3)
let substringStr = str.substring(3)
console.log(sbustrStr,substringStr) // 'svwefrw12312fewf'
  • 不同點:當(dāng)兩者都接收兩個參數(shù)時,sbustr返回值是以參數(shù)1為起始位置,參數(shù)2為長度的字符串
let srt = 'asdo9djsdad'

let re = srt.substr(4,6)
console.log(re) // '9djsda'
  • 而substring則返回以參數(shù)1為起始位置,參數(shù)2為結(jié)束位置的字符串
let srt = 'asdo9djsdad'

let re = srt.substring(4,6)
console.log(re)   //  '9d'

charAt()

  • charAt(index): 參數(shù):一個介于0 和字符串長度減1之間的整數(shù)。 (0~length-1)
    如果沒有提供索引,charAt() 將使用0。
let str = 'hello world'
console.log(str.charAt(1))  //3

console.log(str.charAt(20) // ''

charCodeAt()

返回 0 到 65535 之間的整數(shù)表示給定索引處的UTF-16代碼單元。及返回指定處字符的unicode編碼

let str = 'abc'
console.log(str.charCodeAt(1)) //  98

如此一看是否并沒有多大實際用途,那在看一個例子

let str = 'a我bc'
console.log(str.charCodeAt(1)) // 25105

在unicode編碼中,大于255的為中文字符,因此,在判斷字符串中是否中文的時候,該方法就特別實用了

indexOf()

indexOf() 方法返回調(diào)用它的 String 對象中第一次出現(xiàn)的指定值的索引,從 fromIndex 處進(jìn)行搜索。如果未找到該值,則返回 -1。

str.indexOf(searchValue, index)

// 如果只傳一個參數(shù),則默認(rèn)從0開始。
// 如果字符串中存在目標(biāo)值,返回出現(xiàn)的位置,否則返回-1

let str = 'abc'

console.log(str.indexOf('a'))  // 0
console.log(str.indexOf('e'))  // -1

console.log(str.indexOf(''))  // 0  ()
console.log(str.indexOf('', 1) // 

trim()

該方法的作用是刪除字符串兩端的空白字符串

let str = ' abc '
console.log(str) // ' abc '
console.log(str.trim())  //  'abc'

repeat()

重復(fù)字符串,接收一個參數(shù),指定字符串重復(fù)的次數(shù)

let str = 'abc'
console.log(str.repeat(3)) //  'abcabcabc'

includes()

類似于數(shù)組的includes方法,字符串的該方法也通過判斷是否存在該字符返回true/false

let str = 'acccd'

console.log(str.includes('a'))  // true

console.log(str.includes('e')) // false

toLowerCase() 與 toUpperCase()

關(guān)于這兩個方法,就放在一起寫,好形成對比

  • toUpperCase(): 將字符串轉(zhuǎn)換為大寫字母
  • toLowerCase(): 將字符串轉(zhuǎn)換為小寫字母
  • 兩個方法都返回一個新的字符串,原字符串不變
let str = 'aBcD'

console.log(str.toUpperCase()) //  ABCD

console.log(str.toLowerCase()) // abcd
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容