js字符串的方法總結(包括es6新增方法)

1、str.charAt(index), str.charCodeAt(index) ,String.fromCharCode(num1,num2,…,numN)
str.charAt(index); 方法返回指定索引位置處的字符。如果超出有效範圍的索引值返回空字符串,index爲字符串下標,index取值範圍[0,str.length-1]

var str = "fuck"
console.log(str.charAt(3))//k
console.log(str.charAt(9)//""空字符串

str.charCodeAt(index); 返回子字符串的unicode編碼,index取值範圍同上

String.fromCharCode(num1,num2,…,numN); 根據unicode編碼返回字符串
應用:只允許輸入數字檢測

var str = $("input").val();


if(detectNum(str))
{
  alert("是數字");
}

function detectNum(str1)
{
  var n = 0;
  for(var i=0;i<str1.length;i++)
  {
    n=str1.charCodeAt(i);
    if(n<48 || n>57)
    {
      return false;
    }
  }
  return true;
}

2. 截取字符串substring,substr,slice
substring: (start開始位置的索引,end結束位置索引) 截取後不改變原來字符串,返回一個新的字符串;只寫一個參數表示從開始位置截取到最後;截取的位置不包含結束位置的字符

  var str = "apple"
  var new_str = str.substring(1)//表示從索引1開始到字符串結束
  console.log(new_str)//pple
  var new_str2 = str.substring(1,4)//表示從索引1開始到字符串結束
  console.log(new_str2)//ppl

substr:(start開始位置索引,end需要返回的字符個數) 截取後不改變原來字符串,返回一個新的字符串
不寫第二個參數表示直到最後

var str='abcdefg';
str.substr(1) //bcdefg   
str.substr(1,1) //b

str.slice(start,end); 兩個參數可正可負,負值代表從右截取,返回值:[start,end) 也就是說返回從start到end-1的字符;
注意:起始字符要比結束字符小,否則截取不成功

   var str = 'abcde leodonna'
   console.log(str.slice(1,8))//bcde le
   console.log(str.slice(1,-2))//bcde leodon
   console.log(str.slice(-4,-1))//onn
   console.log(str.slice(8))//odonna

3.字符串分割成數組

str.split(separator,limit); 參數1指定字符串或正則,參照2指定數組的最大長度

例:str.split(""); 每個字符都被分割 [’’,’’,’’,’’]

str.split(); 整個字符串放到數組裏 [’’]

【引申】:數組變成字符串

arr.join(分隔符) 以,連接

arr.join(’’) 無縫連接

arr.join(’-’) 以-連接

arr.join(’’ + str + ‘’) 以表達式連接
4.字符串替換
str.replace(rgExp/substr,replaceText) 返回替換後的字符串

var str="cat,bat,sat,fat"; 
var res=str.replace("at","one");//第一個參數是字符串,所以只會替換第一個子字符串 
console.log(res);//cone,bat,sat,fat 
var res1=str.replace(/at/g,"one");//第一個參數是正則表達式,所以會替換所有的子字符串 
console.log(res1);//cone,bone,sone,fone

5. 字符串正則匹配
str.match(rgExp);

 /* 
  match方法:只接受一個參數,由字符串或RegExp對象指定的一個正則表達式 
  search方法:只接受一個參數,由字符串或RegExp對象指定的一個正則表達式 
  search方法返回字符串中第一個匹配項的索引,如果沒有匹配項,返回-1 
   */
  var str="cat,bat,sat,fat"; 
  var pattern=/.at/; 
  var matches=str.match(pattern); 
  console.log(matches.index);//0 
  console.log(matches[0]);//cat 
  console.log(pattern.lastIndex);//0 
  //lastIndex表示開始搜索下一個匹配項的字符位置,從0算起 
  var pos=str.search(/at/); 
  console.log(pos);//1 1表示at字符串在原來字符串中第一次出現的位置 

ES2019中還增加matchAll()方法返回一個正則表達式在當前字符串的所有匹配
目前有一個提案,增加了String.prototype.matchAll方法,可以一次性取出所有匹配。不過,它返回的是一個遍歷器(Iterator),而不是數組。

const string = 'test1test2test3';

// g 修飾符加不加都可以
const regex = /t(e)(st(\d?))/g;

for (const match of string.matchAll(regex)) {
  console.log(match);
}
// ["test1", "e", "st1", "1", index: 0, input: "test1test2test3"]
// ["test2", "e", "st2", "2", index: 5, input: "test1test2test3"]
// ["test3", "e", "st3", "3", index: 10, input: "test1test2test3"]

遍歷器轉爲數組是非常簡單的,使用…運算符和Array.from方法就可以了。

// 轉爲數組方法一
[...string.matchAll(regex)]

// 轉爲數組方法二
Array.from(string.matchAll(regex));

6. 字符串大小轉換
toLowerCase:方法返回一個字符串,該字符串中的字母被轉換成小寫。
toUpperCase方法返回一個字符串,該字符串中的所有字母都被轉換爲大寫字母。

var str = "wobushiZZde KuaiiLE"
console.log(str.toLowerCase());//wobushizzde kuaiile
console.log(str.toUpperCase());//WOBUSHIZZDE KUAIILE

7.查找指定字符串位置
indexOf(string) 返回String對象內第一次出現子字符串位置。如果沒有找到子字符串,則返回-1。
lastIndexOf(string) : 返回String對象內最後一次出現子字符串位置。如果沒有找到子字符串,則返回-1。
8. 刪除字符串前後的空格
trim:

   var str="   hello world   "; 
   console.log('('+str.trim()+')');//(hello world) 
   console.log('('+str+')');//(   hello world   )

ES2019 對字符串實例新增了trimStart()和trimEnd()這兩個方法。它們的行爲與trim()一致,trimStart()消除字符串頭部的空格,trimEnd()消除尾部的空格。它們返回的都是新字符串,不會修改原始字符串。

const s = '  abc  ';
s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

瀏覽器還部署了額外的兩個方法,trimLeft()是trimStart()的別名,trimRight()是trimEnd()的別名。
9. 字符串重複n次
repeat方法返回一個新字符串,表示將原字符串重複n次。參數如果是小數,會被取整。如果repeat的參數是負數或者Infinity,會報錯。但是,如果參數是 0 到-1 之間的小數,則等同於 0,這是因爲會先進行取整運算。0 到-1 之間的小數,取整以後等於-0,repeat視同爲 0。參數NaN等同於 0。如果repeat的參數是字符串,則會先轉換成數字。

'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
'na'.repeat(-0.9) // ""
'na'.repeat(NaN) // ""
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"

es6中更多字符串新增方法請點擊:http://es6.ruanyifeng.com/#docs/string-methods#實例方法:repeat
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章