創建String對象方式
聲明:String對象的方法也可以在所有基本字符串值中訪問到。
調用構造函數String():
var str = new String(); var str = new String('hello world');//初始化str,str.length = 11;
String訪問及查找的方式
1.訪問(通過索引)
(1)charAt()或[]
1個參數,參數為字符位置,返回字符
var strValue = new String('hello world'); console.log(strValue.charAt(1));//e console.log(strValue[1]);//e,IE7及以下版本使用這種方式,會返回undefined
(2)charCodeAt()
1個參數,參數為字符位置,返回字符編碼
var strValue = new String('hello world'); console.log(strValue.charCodeAt(1));//101
2.查找位置
(1)indexOf()
第一個參數為指定子字符串,第二個參數為檢索位置。返回索引,如果沒有找到則返回-1
var str = 'hello world' str.indexOf('l');//2,返回找到的第一個字符的位置 str.indexOf('l',6);//9
(2)lastIndexOf()
與indexOf()的區別在於,lastIndexOf()是從字符串的末尾向前搜索子字符串
字符方法
1.擴展字符串
concat()
接受任意數量參數,用於將一個或多個字符串拼接起來,返回拼接得到新的字符串副本。
var str = new String('hello'); var result = str.concat(' world'); console.log(result);//hello world typeof result//"string"
2.獲取子字符串方法
slice(),substr(),substring(),這三個方法都會返回被操作字符串的子字符串副本,而且也都接受1或2個參數,前閉後開[)
(1)slice()
var str = 'hello'; str.slice(0,2);//"he",第一個參數指定字符串開始的位置,第二個參數表示字符串到哪裡結束 str.slice(-3);//"llo",o代表-1,依次倒數,-3代表倒數第三個的l str.slice(-2,-1);//"l",同理,-2代表倒數第二個l,-1代表倒數第一的o
(2)substring()
var str = 'hello'; str.substring(0,2);//"he",此時的參數意義同str.slice(0,2) str.substring(-3);//"hello",substring()方法會把所有負值參數轉換為0 str.substring(-3,-2);//"",同上
(3)substr()
var str = 'hello'; str.substr(1,2);//"el",第一個參數指定字符串的開始位置,第二個參數指定的則是返回的字符個數 str.substr(-3);//"llo",此時的參數意義同str.slice(-3) str.substr(-3,-1);//"",substr()方法會將負的第二個參數轉換為0
substr()方法傳遞負值時在IE中存在問題,它會返回原始的字符串,IE9修復了這個問題
3.將字符串轉換為數組
split()
基於指定的分隔符(可以是字符串,也可以是RegExp對象)將字符串分割成多個子字符串,並將結果放在一個數組中,可接受可選的第二個參數,用於指定數組的大小,返回數組。
var color = 'blue,red,orange'; color.split();//["red,blue,orange"],長度為1 color.split(',');//["blue", "red", "orange"],長度為3 var color = 'blue-red-orange'; color.split('-');//["blue", "red", "orange"],長度為3 color.split(',',2);//["blue", "red"]
4.字符串大小寫轉換
toLowerCase(),toUpperCase()
var str = 'hello'; str.toUpperCase();//"HELLO" str.toLowerCase();//"hello"
5.刪除字符串空格方法
trim()
刪除字符串中前置以及後綴的所有空格,然後返回結果副本。
var str = ' hello world '; str.trim()//"hello world"
6.字符串的模式匹配方法
(1)match()
參數:只接受一個參數,要麼是一個正則表達式,要麼是一個RegExp()對象。
返回:數組。數組中的第一項是與整個模式匹配的字符串,之後的每一項(如果有)保存著正則表達式捕獲組匹配的字符串
本質上與調用exec()相同。
var text = 'cat, bat, sat, fat'; var pattern = /.at/; var matches = text.match(pattern); matches // ["cat"] matches.input // "cat, bat, sat, fat" matches.index // 0
(2)search()
參數:與match()方法相同。
返回:字符串中第一個匹配項的索引,如果沒有匹配項,則返回-1。
search()方法始終從前向後找
var text = 'cat, bat, sat, fat'; var pattern = /at/; text.search(pattern) // 1
(3)replace()
參數:接收兩個參數,第一個參數可以是一個RegExp對象或者一個字符串(這個字符串不會轉換成正則表達式),第二個參數可以是一個字符串或者一個函數。
如果 第一個參數是字符串,那麼只會替換第一個子字符串。要想替換所有子字符串,唯一的辦法就是提供一個正則表達式,而且要指定全局標志(g)標志。
如果 第二個參數是字符串,那麼還可以使用一些特殊的字符序列,將正則表達式操作得到的值插入到結果字符串中。
也可以是函數,傳遞給函數的參數依次是模式的匹配項,模式的匹配項在字符串中的位置,和原始字符串。在正則表達式定義了多個捕獲組的情況下,傳遞給函數的參數依次是模式的匹配項,第一個捕獲組的匹配項,以此類推,但最後兩個參數分別是模式的匹配項在字符串中的位置和原始字符串。
字符序列
替換文本
$$
$
$&
匹配整個pattern中的子字符串
$'
匹配的子字符串之後的子字符串
$`
匹配的字符串之前的子字符串
$n
匹配第n個捕獲組中的子字符串,$1
$nn
匹配第nn個捕獲組的子字符串,$01
var text = 'xxx-love-xxx'; var pattern = /xxx/g; var result = text.replace(pattern,'2') result// "2-love-2" text.replace(/(xxx)-\w{4}-(xxx)/g,'I love YOU');//"I love YOU" var text = 'xxx-love-xxx'; var pattern1 = /xxx/g; var result = text.replace(pattern1,'$$') result// "$-love-$" var result = text.replace(pattern1,'$&2') result//"xxx2-love-xxx2" var result = text.replace(pattern1,'$\'') result//"-love-xxx-love-"