本文向大家詳細(xì)的介紹了javascript中的String對(duì)象的簡(jiǎn)介、定義方式、實(shí)例屬性和實(shí)例方法,非常的細(xì)致全面,這里推薦給大家,希望對(duì)大家能夠有所幫助。
String 字符串對(duì)象
1. 介紹
String 對(duì)象,對(duì)字符串進(jìn)行操作,如:截取一段子串、查找字符串/字符、轉(zhuǎn)換大小寫等等。
2. 定義方式
2.1 new String(Value) 構(gòu)造函數(shù):返回一個(gè)內(nèi)容為Value的String對(duì)象
參數(shù):
①value {String} :字符串
返回值:
{String對(duì)象} 返回一個(gè)內(nèi)容為Value的String對(duì)象
示例:
代碼如下:
var demoStr = new String('abc');
console.log(typeof demoStr); // => object
console.log(demoStr); // => abc
2.2 直接賦值(推薦)
示例:
代碼如下:
var demoStr = 'abc';
console.log(typeof demoStr); // string
console.log(demoStr); // => abc
3. 實(shí)例屬性
3.1 length :返回字符串中的字符數(shù)
代碼如下:
var s = 'abc';
console.log(s.length); // => 3
console.log('新年快樂(lè)'.length); // => 4 :一個(gè)中文字符也計(jì)算為1個(gè)數(shù)量
console.log(''.length); // => 0 :空字符串返回0
4. 實(shí)例方法
注意:字符串的實(shí)例方法不會(huì)改變字符串的本身,只返回操作后的結(jié)果。
4.1 charAt(index) :返回一個(gè)字符串中指定位置的字符,編號(hào)從0開(kāi)始,若傳入個(gè)不存在的數(shù)值,就返回空字符串
參數(shù):
①index {int} :位置索引,從0開(kāi)始計(jì)算
返回值:
{string} 返回一個(gè)字符串中指定位置的字符;若傳入個(gè)不存在的位置數(shù)值,返回一個(gè)空字符串
示例:
代碼如下:
var s = 'abc';
console.log(s.charAt(1)); // => b :返回位置為1的字符
console.log(s); // => 不影響原來(lái)的數(shù)組
console.log(s.charAt(5)); // => '' :獲取一個(gè)不存在位置的字符,返回一個(gè)長(zhǎng)度為0的空字符串
4.2 charCodeAt(index) :返回一個(gè)字符串中指定位置字符的Unicode編碼
參數(shù):
①index {int} :位置索引,從0開(kāi)始計(jì)算
返回值:
{number} 返回一個(gè)字符串中指定位置字符的Unicode編碼;若傳入個(gè)不存在的位置數(shù)值,返回NaN
示例:
代碼如下:
var s = 'abc';
console.log(s.charCodeAt(0)); // => 98 :字符b的Unicode編碼
console.log(s.charCodeAt(5)); // => NaN :獲取一個(gè)不存在位置的字符,返回NaN
4.3 concat(value1,value2 ... valueN) :連接一個(gè)或多個(gè)字符串,并返回連接后的字符串
參數(shù):
①value1,value2 ... valueN {string} :一個(gè)或多個(gè)字符串
返回值:
{string} 返回連接后的字符串
示例:
代碼如下:
var s = 'abc';
console.log(s.concat('d')); // => abcd
console.log(s); // => abc :不影響原先的字符串
console.log(s.concat('d', 'e')); // => abcde
4.4 indexOf(value , |startPosition ) :在實(shí)例中從前往后查找一個(gè)字符串或字符,并返回找到的位置(從0開(kāi)始計(jì)數(shù))。若未找到,返回-1
參數(shù):
①value {string} :查找的字符串
②startPosition {int} 可選 :開(kāi)始查找的起始位置,默認(rèn)從位置0開(kāi)始查找
返回值:
{int} 返回找到的位置(從0開(kāi)始計(jì)數(shù))。若未找到,返回-1
示例:
代碼如下:
var s = 'abc';
console.log(s.indexOf('b')); // => 1
console.log(s.indexOf('d')); // => -1 :未找到
console.log(s.indexOf('b', 2)); // => -1 :從位置2(第3個(gè)字符處)開(kāi)始查找
4.5 lastIndexOf(value , |startPosition ) :在實(shí)例中從后往前開(kāi)始查找一個(gè)字符串或字符,并返回找到的位置(從0開(kāi)始計(jì)數(shù))。若未找到,返回-1
參數(shù):
①value {string} :查找的字符串
②startPosition {int} 可選 :開(kāi)始查找的起始位置,默認(rèn)從最后開(kāi)始查找
返回值:
{int} 返回找到的位置(從0開(kāi)始計(jì)數(shù))。若未找到,返回-1
示例:
代碼如下:
var s = 'abcabc';
console.log(s.lastIndexOf('a')); // => 3 :從后往前查找
console.log(s.lastIndexOf('d')); // => -1 :未找到返回-1
console.log(s.lastIndexOf('a', 2)); // => 0 :從位置2(第3個(gè)字符處)開(kāi)始往前查找
4.6 localeCompare(value) :實(shí)例與參數(shù)進(jìn)行比較,返回比較結(jié)果
參數(shù):
①value {string} :需比較的字符串
返回值:
0 :實(shí)例比參數(shù)大
1 :實(shí)例與參數(shù)相等
-1 :實(shí)例比參數(shù)小
示例:
代碼如下:
var s='abc';
console.log(s.localeCompare('ab')); // => 1 :實(shí)例比參數(shù)大
console.log(s.localeCompare('abc')); // => 0 :實(shí)例與參數(shù)相等
console.log(s.localeCompare('abd')); // => -1 :實(shí)例比參數(shù)小
4.7 match(regexp) :使用正則表達(dá)式進(jìn)行匹配查找
參數(shù):
①regexp {regexp} :正則表達(dá)式,eg:/\d+/
返回值:
根據(jù)正則表達(dá)式是否帶屬性'g',返回不同的結(jié)果;若沒(méi)匹配,就返回 {null}:
①正則表達(dá)式不帶屬性'g',執(zhí)行一次匹配,返回{單個(gè)匹配}結(jié)果對(duì)象,對(duì)象包含以下屬性:
數(shù)組序號(hào):表示匹配結(jié)果,0為匹配文本,1為從做到右第1個(gè)圓括號(hào)匹配結(jié)果,2為第二個(gè)圓括號(hào),依此類推
index屬性:表示匹配文本在匹配源的開(kāi)始位置
input屬性:表示匹配源
②正則表達(dá)式帶屬性'g',執(zhí)行全局匹配,找到字符串所有匹配對(duì)象,返回一個(gè){字符串?dāng)?shù)組}:數(shù)組元素包含string中的每一個(gè)匹配對(duì)象,不包含正則表達(dá)式括號(hào)內(nèi)的字串,也不提供index和input屬性。
示例:
代碼如下:
// 1.單個(gè)匹配
var s = 'a1b2c3d4';
var mc = s.match(/\d+/); // => 獲取第一個(gè)正則匹配的結(jié)果
if (mc != null) {
console.log(mc.index); // => 1 :匹配結(jié)果在匹配源的起始位置
console.log(mc.input) // => a1b2c3d4 :匹配源
console.log(mc[0]); // => 1 :獲取匹配到的結(jié)果
}
// 2.全局匹配
var mcArray = s.match(/\d+/g); // => 獲取全部正則匹配的數(shù)字
if (mcArray != null) {
for (var i = 0,len=mcArray.length; i < len; i++) {
var mc=mcArray[i];
console.log(mc); // => 1,2,3,4 :獲取匹配到的結(jié)果
}
}
// 3.帶括號(hào)的匹配
s = 'a1b2c3d4';
mc = s.match(/[a-z]([1-9])/); // => 獲取第一個(gè)正則匹配的結(jié)果
if (mc != null) {
console.log(mc.index); // => 0 :匹配結(jié)果在匹配源的起始位置
console.log(mc.input) // => a1b2c3d4 :匹配源
console.log(mc[0]); // => a1 :序號(hào)0表示匹配到的結(jié)果
console.log(mc[1]); // => 1 :序號(hào)1表示第一個(gè)括號(hào)內(nèi)的子匹配結(jié)果
}
4.8 replace(regexp, replaceStr) :替換正則表達(dá)式匹配的子串,并返回替換后的字符串
參數(shù):
①regexp {regexp} :正則表達(dá)式。eg:/\d+/
②replaceStr {string | function} :
1)若是字符串,表示替換的字符串,匹配到字串都替換成此字符串;
字符串中的$字符有特殊的含義:
$1,$2 ... $99 :表示①參從左到右圓括號(hào)的匹配子項(xiàng)
$& :表示整個(gè)①參匹配的子項(xiàng)
$$ :美元符號(hào)
2)若是函數(shù),表示每個(gè)匹配結(jié)果都調(diào)用此函數(shù),函數(shù)的唯一參數(shù)為匹配結(jié)果,并返回一個(gè)替換結(jié)果。
返回值:
{string} 返回一個(gè)替換后的字符串
示例:
代碼如下:
var oldStr = 'a1b2c3d4';
// 1.正則匹配到【所有】數(shù)字,替換成:','逗號(hào)
var newStr = oldStr.replace(/\d+/g, ',');
console.log(newStr); // => a,b,c,d,
// 2.正則匹配到【所有】數(shù)字,替換成:匹配結(jié)果 + ','逗號(hào)
newStr = oldStr.replace(/\d+/g, '$&,');
console.log(newStr); // => a1,b2,c3,d4,
// 3.正則匹配到【所有】數(shù)字,每個(gè)匹配結(jié)果都調(diào)用函數(shù),并返回替換后的結(jié)果
newStr = oldStr.replace(/\d+/g, function (word) {
if (word % 2 == 0) {
return '偶';
}
return '奇';
});
console.log(newStr); // => a奇b偶c奇d偶
4.9 search(regexp) :返回查找正則表達(dá)式第一個(gè)匹配的位置
參數(shù):
①regexp {regexp} :正則表達(dá)式。eg:/\d+/
返回值:
{int} 返回第一個(gè)匹配的結(jié)果的位置;若沒(méi)找到匹配結(jié)果返回-1
示例:
代碼如下:
console.log( 'abcd'.search(/\d+/) ); // => -1 :沒(méi)有找到數(shù)字
console.log( 'abcd1234'.search(/\d+/) ); // => 4 :位置序號(hào)為4,返回第一個(gè)數(shù)字的位置
4.10 slice(start, |end):返回從字符串start位置到end前一個(gè)位置的子串
參數(shù):
①start {int} :子串提取的開(kāi)始位置索引(包括此位置的字符)。
若數(shù)字為負(fù),表示從字符串尾部開(kāi)始計(jì)算。如:-1表示倒數(shù)一個(gè)字符串,-2表示倒數(shù)第二個(gè)字符。
②end {int} 可選:子串提取的結(jié)束位置索引(不包括此位置的字符)。
若數(shù)字為負(fù),表示從字符串尾部開(kāi)始計(jì)算。如:-1表示倒數(shù)一個(gè)字符串,-2表示倒數(shù)第二個(gè)字符。
若省略此參數(shù),返回從start位置到結(jié)束的所有字符。
注意:
子串的提取順序是從左到有,若start索引位置大于end索引位置,將返回一個(gè)空字符串。
返回值:
{string} 返回從字符串start位置到end前一個(gè)位置的子串。
示例:
代碼如下:
var s = 'abcdefg';
console.log( s.slice(1) ); // bcdefg :省略end參數(shù),結(jié)束位置為末尾
console.log( s.slice(1, 3) ); // bc :返回從位置序號(hào)1到位置序號(hào)2(end前一個(gè)位置)的子串
console.log( s.slice(-3) ); // efg :返回從倒數(shù)第三個(gè)開(kāi)始到末尾的所有字符
console.log( s.slice(-3, -1) ); // ef :返回從倒數(shù)第三個(gè)開(kāi)始到第二個(gè)(end前一個(gè)位置)的所有字符
4.11 split(delimiter, |arrayLength) :將字符串按照某種分隔符切分成一個(gè)由字符串組成的數(shù)組并返回
參數(shù):
①delimiter {regexp | string} :指定的分隔符,可以為正則表達(dá)式或字符串。
②arrayLength {int} 可選 :分割數(shù)組的長(zhǎng)度。若省略,返回所有分割的子串。
注意:
若分隔符在字符串的第一個(gè)或最后一個(gè),將添加一個(gè)空字符串到返回的數(shù)組。
返回值:
{ string[] } 返回一個(gè)由字符串組成的數(shù)組。
示例:
代碼如下:
console.log( 'a,b,c,d,e'.split(',') ); // => ["a", "b", "c", "d", "e"]
console.log( ',a,b,c,d,e,'.split(',') ); // => ["", "a", "b", "c", "d", "e", ""] :分隔符在最前或最后面,會(huì)添加一個(gè)空字符串
console.log( 'a,b,c,d,e'.split(',',3) ); // => ["a", "b", "c"] :返回前3個(gè)分割的子串
console.log( 'a1b2c3d4e'.split(/\d/) ); // => ["a", "b", "c", "d", "e"] :將數(shù)字來(lái)做為分隔符
4.12 substr(start, |wordLength):返回從字符串start位置開(kāi)始計(jì)算到wordLength個(gè)長(zhǎng)度的子串
參數(shù):
①start {int} :子串提取的開(kāi)始位置索引(包括此位置的字符)。
若數(shù)字為負(fù),表示從字符串尾部開(kāi)始計(jì)算。如:-1表示倒數(shù)一個(gè)字符串,-2表示倒數(shù)第二個(gè)字符。
②wordLength {int} 可選 :提取字符的長(zhǎng)度。若省略此參數(shù),返回從start位置到結(jié)束的所有字符。
返回值:
{string} 返回提取的字符串
示例:
代碼如下:
ar s = 'abcdefg';
onsole.log( s.substr(0) ); // => abcdefg :省略第二個(gè)參數(shù),返回從位置序號(hào)0開(kāi)始,一直到最后的字符
onsole.log( s.substr(0, 3) ); // => abc :返回從位置序號(hào)0開(kāi)始,計(jì)數(shù)3個(gè)字符
onsole.log( s.substr(2, 4) ); // => cdef :返回從位置序號(hào)2開(kāi)始,計(jì)數(shù)4個(gè)字符
onsole.log( s.substr(-2, 3) ); // fg :返回從倒數(shù)第二個(gè)字符串開(kāi)始,計(jì)數(shù)3個(gè)(超過(guò)字符長(zhǎng)度,就只返回可統(tǒng)計(jì)的字符)
4.13 substring(start, |end) :返回從字符串start位置到end前一個(gè)位置的子串
參數(shù):
①start {int} :子串提取的開(kāi)始位置索引(包括此位置的字符)。數(shù)字不能為負(fù)數(shù),若為負(fù)數(shù)按0來(lái)處理
②end {int} 可選:子串提取的結(jié)束位置索引(不包括此位置的字符)。數(shù)字不能為負(fù)數(shù),若為負(fù)數(shù)按0來(lái)處理
返回值:
{string} 返回從字符串start位置到end前一個(gè)位置的子串。
示例:
代碼如下:
var s = 'abcdefg';
console.log( s.substring(0) ); // => abcdefg :省略end參數(shù),返回從位置序號(hào)0開(kāi)始,一直到最后的字符
console.log( s.substring(0, 3) ); // => abc :返回從位置序號(hào)0開(kāi)始到位置序號(hào)2(②參的前一個(gè))的字符
console.log( s.substring(2, 4) ); // => cd :返回從位置序號(hào)2開(kāi)始到位置序號(hào)3(②參的前一個(gè))的字符
console.log( s.substring(-3, 3) ); // abc :參數(shù)若為負(fù),就按數(shù)字0來(lái)處理,所以此參數(shù)實(shí)際返回位置序號(hào)0到位置序號(hào)3的字符
4.14 toUpperCase() :將字符串轉(zhuǎn)換為大寫并返回
4.15 toUpperCase() :將字符串轉(zhuǎn)換為小寫并返回
4.16 trim() :移除字符串開(kāi)頭和結(jié)尾處的空白字符并返回
以上就是本文的全部?jī)?nèi)容了,希望通過(guò)本文,大家對(duì)javascript中的String對(duì)象能有新的認(rèn)識(shí)。
更多信息請(qǐng)查看IT技術(shù)專欄