字符串的操做在js中很是頻繁,也很是重要。以往看完書以後都能記得很是清楚,但稍微隔一段時間不用,便會忘得差很少,記性很差是硬傷啊。。。今天就對字符串的一些經常使用操做作個整理,一者加深印象,兩者方便從此溫習查閱。javascript
String對象屬性html
(1) length屬性java
length算是字符串中很是經常使用的一個屬性了,它的功能是獲取字符串的長度。固然須要注意的是js中的中文每一個漢字也只表明一個字符,這裏可能跟其餘語言有些不同。正則表達式
var str = 'abc'; console.log(str.length);
(2) prototype屬性編程
prototype在面向對象編程中會常常用到,用來給對象添加屬性或方法,而且添加的方法或屬性在全部的實例上共享。所以也經常使用來擴展js內置對象,以下面的代碼給字符串添加了一個去除兩邊空格的方法:數組
String.prototype.trim = function(){ return this.replace(/^\s*|\s*$/g, ''); }
String對象方法this
1.獲取類方法編碼
(1) charAt()url
stringObject.charAt(index)
charAt()方法可用來獲取指定位置的字符串,index爲字符串索引值,從0開始到string.leng – 1,若不在這個範圍將返回一個空字符串。如:spa
var str = 'abcde'; console.log(str.charAt(2)); //返回c console.log(str.charAt(8)); //返回空字符串
(2) charCodeAt()
stringObject.charCodeAt(index)
charCodeAt()方法可返回指定位置的字符的Unicode編碼。charCodeAt()方法與charAt()方法相似,都須要傳入一個索引值做爲參數,區別是前者返回指定位置的字符的編碼,然後者返回的是字符子串。
var str = 'abcde'; console.log(str.charCodeAt(0)); //返回97
(3) fromCharCode()
String.fromCharCode(numX,numX,…,numX)
fromCharCode()可接受一個或多個Unicode值,而後返回一個字符串。另外該方法是String 的靜態方法,字符串中的每一個字符都由單獨的數字Unicode編碼指定。
String.fromCharCode(97, 98, 99, 100, 101) //返回abcde
2.查找類方法
(1) indexOf()
stringObject.indexOf(searchvalue,fromindex)
indexOf()用來檢索指定的字符串值在字符串中首次出現的位置。它能夠接收兩個參數,searchvalue表示要查找的子字符串,fromindex表示查找的開始位置,省略的話則從開始位置進行檢索。
var str = 'abcdeabcde'; console.log(str.indexOf('a')); // 返回0 console.log(str.indexOf('a', 3)); // 返回5 console.log(str.indexOf('bc')); // 返回1
(2) lastIndexOf()方法
stringObject.lastIndexOf(searchvalue,fromindex)
lastIndexOf()語法與indexOf()相似,它返回的是一個指定的子字符串值最後出現的位置,其檢索順序是從後向前。
var str = 'abcdeabcde'; console.log(str.lastIndexOf('a')); // 返回5 console.log(str.lastIndexOf('a', 3)); // 返回0 從第索引3的位置往前檢索 console.log(str.lastIndexOf('bc')); // 返回6
(3) search()方法
stringObject.search(substr) stringObject.search(regexp)
search()方法用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串。它會返回第一個匹配的子字符串的起始位置,若是沒有匹配的,則返回-1。
var str = 'abcDEF'; console.log(str.search('c')); //返回2 console.log(str.search('d')); //返回-1 console.log(str.search(/d/i)); //返回3
(4) match()方法
stringObject.match(substr) stringObject.match(regexp)
match()方法可在字符串內檢索指定的值,或找到一個或多個正則表達式的匹配。
若是參數中傳入的是子字符串或是沒有進行全局匹配的正則表達式,那麼match()方法會從開始位置執行一次匹配,若是沒有匹配到結果,則返回null。不然則會返回一個數組,該數組的第0個元素存放的是匹配文本,除此以外,返回的數組還含有兩個對象屬性index和input,分別表示匹配文本的起始字符索引和stringObject 的引用(即原字符串)。
var str = '1a2b3c4d5e'; console.log(str.match('h')); //返回null console.log(str.match('b')); //返回["b", index: 3, input: "1a2b3c4d5e"] console.log(str.match(/b/)); //返回["b", index: 3, input: "1a2b3c4d5e"]
若是參數傳入的是具備全局匹配的正則表達式,那麼match()從開始位置進行屢次匹配,直到最後。若是沒有匹配到結果,則返回null。不然則會返回一個數組,數組中存放全部符合要求的子字符串,而且沒有index和input屬性。
var str = '1a2b3c4d5e'; console.log(str.match(/h/g)); //返回null console.log(str.match(/\d/g)); //返回["1", "2", "3", "4", "5"]
3.截取類方法
(1) substring()
stringObject.substring(start,end)
substring()是最經常使用到的字符串截取方法,它能夠接收兩個參數(參數不能爲負值),分別是要截取的開始位置和結束位置,它將返回一個新的字符串,其內容是從start處到end-1處的全部字符。若結束參數(end)省略,則表示從start位置一直截取到最後。
var str = 'abcdefg'; console.log(str.substring(1, 4)); //返回bcd console.log(str.substring(1)); //返回bcdefg console.log(str.substring(-1)); //返回abcdefg,傳入負值時會視爲0
(2) slice()
stringObject.slice(start,end)
slice()方法與substring()方法很是相似,它傳入的兩個參數也分別對應着開始位置和結束位置。而區別在於,slice()中的參數能夠爲負值,若是參數是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最後一個字符。
var str = 'abcdefg'; console.log(str.slice(1, 4)); //返回bcd console.log(str.slice(-3, -1)); //返回ef console.log(str.slice(1, -1)); //返回bcdef console.log(str.slice(-1, -3)); //返回空字符串,若傳入的參數有問題,則返回空
(3) substr()
stringObject.substr(start,length)
substr()方法可在字符串中抽取從start下標開始的指定數目的字符。其返回值爲一個字符串,包含從 stringObject的start(包括start所指的字符)處開始的length個字符。若是沒有指定 length,那麼返回的字符串包含從start到stringObject的結尾的字符。另外若是start爲負數,則表示從字符串尾部開始算起。
var str = 'abcdefg'; console.log(str.substr(1, 3)) //返回bcd console.log(str.substr(2)) //返回cdefg console.log(str.substr(-2, 4)) //返回fg,目標長度較大的話,以實際截取的長度爲準
4.其餘方法
(1) replace()方法
stringObject.replace(regexp/substr,replacement)
replace()方法用來進行字符串替換操做,它能夠接收兩個參數,前者爲被替換的子字符串(能夠是正則),後者爲用來替換的文本。
若是第一個參數傳入的是子字符串或是沒有進行全局匹配的正則表達式,那麼replace()方法將只進行一次替換(即替換最前面的),返回通過一次替換後的結果字符串。
var str = 'abcdeabcde'; console.log(str.replace('a', 'A')); console.log(str.replace(/a/, 'A'));
若是第一個參數傳入的全局匹配的正則表達式,那麼replace()將會對符合條件的子字符串進行屢次替換,最後返回通過屢次替換的結果字符串。
var str = 'abcdeabcdeABCDE'; console.log(str.replace(/a/g, 'A')); //返回AbcdeAbcdeABCDE console.log(str.replace(/a/gi, '$')); //返回$bcde$bcde$BCDE
(2) split()方法
stringObject.split(separator,howmany)
split()方法用於把一個字符串分割成字符串數組。第一個參數separator表示分割位置(參考符),第二個參數howmany表示返回數組的容許最大長度(通常狀況下不設置)。
var str = 'a|b|c|d|e'; console.log(str.split('|')); //返回["a", "b", "c", "d", "e"] console.log(str.split('|', 3)); //返回["a", "b", "c"] console.log(str.split('')); //返回["a", "|", "b", "|", "c", "|", "d", "|", "e"]
也能夠用正則來進行分割
var str = 'a1b2c3d4e'; console.log(str.split(/\d/)); //返回["a", "b", "c", "d", "e"]
(3) toLowerCase()和toUpperCase()
stringObject.toLowerCase() stringObject.toUpperCase()
toLowerCase()方法能夠把字符串中的大寫字母轉換爲小寫,toUpperCase()方法能夠把字符串中的小寫字母轉換爲大寫。
var str = 'JavaScript'; console.log(str.toLowerCase()); //返回javascript console.log(str.toUpperCase()); //返回JAVASCRIPT