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