首頁  >  文章  >  web前端  >  JavaScript原生物件之String物件的屬性與方法詳解_javascript技巧

JavaScript原生物件之String物件的屬性與方法詳解_javascript技巧

WBOY
WBOY原創
2016-05-16 16:09:321442瀏覽

length

length 屬性可傳回字串中的字元數目。

length 是根據字串的UTF-16編碼來取得長度的,空字串長度為0。 length 不可修改。

charAt()

charAt() 方法可傳回指定位置的字元。注意,JavaScript 並沒有一種有別於字串類型的字元資料類型,所以傳回的字元是長度為 1 的字串。

stringObject.charAt(index)

參數index是必需的。表示字串中某個位置的數字,即字元在字串中的下標。字串中第一個字元的下標是 0。如果參數 index 不在 0 與 string.length 之間,則該方法將傳回一個空字串。

注意:charAt() 方法對於一些非 BMP(Basic-Multilingual-Plane) 字元支援會有問題,參考:MDN

charCodeAt()

charCodeAt() 方法可傳回指定位置的字元的 Unicode 編碼。這個回傳值是 0 – 65535 之間的整數。
方法 charCodeAt() 與 charAt() 方法執行的操作相似,只不過前者傳回的是位於指定位置的字元的編碼,而後者傳回的是字元子字串。

stringObject.charCodeAt(index)

參數index是可選的。表示字串中某個位置的數字,即字元在字串中的下標。字串中第一個字元的下標是 0。如果 index 是負數,或大於等於字串的長度,則 charCodeAt() 傳回 NaN。 index為空時預設為0。

Unicode 編碼的範圍是 0 到 1,114,111。前128個Unicode 編碼和ASCII字元編碼匹配。 charCodeAt() 方法傳回的值總是小於65536,因為較高值的字元會成對出現,需要用charCodeAt(i)和charCodeAt(i 1)同時擷取。

concat() –不建議使用

concat() 方法用於連接兩個或多個字串。

stringObject.concat(stringX, stringX, …, stringX)

參數stringX是必需的。是將連接為一個字串的一個或多個字串物件。

concat() 方法將把它的所有參數轉換成字串,然後按順序連接到字串 stringObject 的尾部,並傳回連接後的字串。請注意,stringObject 本身並沒有被更改。

注意,強烈建議使用 ” ” 運算符來進行字串的連接,來替代這個方法,效率也更高,參考:concat vs vs join
indexOf()

indexOf() 方法可傳回某個指定的字串值在字串中首次出現的位置。

stringObject.indexOf(searchvalue, fromindex)

參數searchvalue是必需的,規定需檢索的字串值。參數fromindex是可選的整數參數。規定在字串中開始檢索的位置。它的合法取值是 0 到 stringObject.length – 1。如省略該參數,則將從字串的首字開始檢索。

該方法將從頭到尾地檢索字串 stringObject,看它是否含有子字串 searchvalue。開始檢索的位置在字串的 fromindex 處或字串的開頭(沒有指定 fromindex 時)。如果找到一個 searchvalue,則傳回 searchvalue 的第一次出現的位置。 stringObject 中的字元位置是從 0 開始的。

注意:indexOf() 方法對大小寫敏感!如果要檢索的字串值沒有出現,則該方法傳回 -1。

lastIndexOf()

lastIndexOf() 方法可傳回一個指定的字串值最後出現的位置,在一個字串中的指定位置從後向前搜尋。

lastIndexOf() 和 indexOf() 參數和使用方法一致,只不過是從後向前搜尋。

複製程式碼 程式碼如下:

var str="Hello world world!"

console.log(str.indexOf("wo"));        //6
console.log(str.indexOf("wo",2));      //6
console.log(str.indexOf("wo",10));     //12
console.log(str.lastIndexOf("wo"));    //12
console.log(str.lastIndexOf("wo",2));  //-1
console.log(str.lastIndexOf("wo",10)); //6

localeCompare()

用本地特定的順序來比較兩個字串。

stringObject.localeCompare(target)

參數target是必要的,要以本地特定的順序與 stringObject 進行比較的字串。

傳回比較結果的數字。如果 stringObject 小於 target,則 localeCompare() 傳回小於 0 的數。如果 stringObject 大於 target,則該方法傳回大於 0 的數。如果兩個字串相等,或根據本地排序規則沒有區別,則該方法傳回 0。

把 運算子套用到字串時,它們只用字元的 Unicode 編碼比較字串,而不考慮當地的排序規則。以這種方法產生的順序不一定是正確的。例如,在西班牙語中,其中字元 “ch” 通常會作為出現在字母 “c” 和 “d” 之間的字元來排序。 localeCompare() 方法提供的比較字串的方法,考慮了預設的本地排序規則。

localeCompare()在某些進階瀏覽器中的參數也支援locales 和options,參考下面的程式碼和MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript /Reference/Global_Objects/String/localeCompare

複製程式碼 程式碼如下:

//不同文化的排序規則不同
console.log('ä'.localeCompare('z', 'de'));  //-1
console.log('ä'.localeCompare('z', 'sv'));  //1

match()

match() 方法可在字串內檢索指定的值,或找到一個或多個正規表示式的符合。

此方法類似 indexOf() 和 lastIndexOf(),但是它傳回指定的值,而不是字串的位置。

stringObject.match(regexp)

參數regexp可以是字串,也可以是正規表示式 RegExp 物件。

傳回存放符合結果的陣列。此陣列的內容依賴於 regexp 是否具有全域標誌 g。

如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringObject 中執行一次符合。如果沒有找到任何符合的文本, match() 將返回 null。否則,它將傳回一個數組,其中存放了與它找到的匹配文字相關的資訊。此數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與正則表達式的子表達式匹配的文本。除了這些常規的陣列元素之外,傳回的陣列還含有兩個物件屬性。 index 屬性宣告的是符合文字的起始字元在 stringObject 中的位置,input 屬性宣告的是對 stringObject 的參考。

如果 regexp 具有標誌 g,則 match() 方法將執行全域檢索,找到 stringObject 中的所有符合子字串。若沒有找到任何符合的子字串,則傳回 null。如果找到了一個或多個符合子字串,則傳回一個陣列。不過全域比對傳回的陣列的內容與前者大不相同,它的陣列元素中存放的是 stringObject 中所有的符合子字串,而且也沒有 index 屬性或 input 屬性。

沒有標誌g,呼叫 stringObject.match(regexp) 和呼叫 regexp.exec(stringObject) 的結果相同。在全域擷取模式下,match() 即不提供與子運算式相符的文字的訊息,也不宣告每個符合子字串的位置。如果需要這些全域檢索的信息,可以使用 RegExp.exec()。

注意:如果需要知道一個字串是否匹配一個正規表示式,使用 regexp.test(string);如果只想一次匹配,使用 regexp.exec(string) 代替 string.match(regexp)。

複製程式碼 程式碼如下:

var str="Hello world!"
var str2="1 加 2 equal 3"

console.log(str.match("world"));  //["world", index: 6, input: "Hello world!"]
console.log(str2.match(/d /g));  //["1", "2", "3"]

replace()

replace() 方法用於在字串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子字串。

stringObject.replace(regexp/substr, replacement)

參數regexp/substr是必需的。規定子字串或要替換的模式的 RegExp 物件。如果該值是一個字串,則將它作為要檢索的直接量文字模式,而不是先轉換為 RegExp 物件。參數replacement是必需的。是一個字串值。規定了替換文字或產生替換文字的函數。

方法會傳回一個新的字串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之後得到的。

字串 stringObject 的 replace() 方法執行的是尋找並取代的操作。它將在 stringObject 中尋找與 regexp 相符的子字串,然後用 replacement 來取代這些子字串。如果 regexp 具有全域標誌 g,那麼 replace() 方法將會取代所有符合的子字串。否則,它只替換第一個匹配子字串。

replacement 可以是字串,也可以是函數。如果它是字串,那麼每個匹配都將由字串替換。但是 replacement 中的 $ 字元具有特定的含義。如下所示,它說明從模式匹配得到的字串將用於替換:

1.$$ – $
2.$` - 位於符合子字串左側的文字。
3.$' - 位於匹配子字串右側的文字。
4.$& - 與 regexp 相符的子字串。
5.$number - 與 regexp 中的第 number個子表達式相符的文字。

replacement 可以是函數,在這種情況下,每個匹配都會呼叫該函數,它傳回的字串將作為替換文字使用。此函數的第一個參數是匹配模式的字串。接下來的參數是與模式中的子表達式相符的字串,可以有 0 個或多個這樣的參數。接下來的參數是一個整數,宣告了符合在 stringObject 中出現的位置。最後一個參數是 stringObject 本身。

複製程式碼 程式碼如下:

//替換一次
var str = "Hello Microsoft!";
console.log(str.replace(/Microsoft/, "Google"));  //Hello Google!
console.log(str);  //Hello Microsoft!

//替換多次
var str2 = "Hello Microsoft! and Microsoft! and Microsoft! or Microsoft!";
console.log(str2.replace(/Microsoft/g, "Google"));  //Hello Google! and Google! and Google! or Google!

//字元轉換
var str3 = "Doe, John";
console.log(str3.replace(/(w )s*, s*(w )/, "$2 $1"));  //John Doe

var str4 = '"a", "b"';
console.log(str4.replace(/"([^"]*)"/g, "'$1'"));  //'a', 'b'

//使用函數
var str5 = 'aaa bbb ccc';
console.log(str5.replace(/bw b/g, function(word){
  return word.substring(0,1).toUpperCase() word.substring(1);}
));   //Aaa Bbb Ccc

search()

search() 方法用於檢索字串中指定的子字串,或檢索與正規表示式相符的子字串。

stringObject.search(regexp)

參數regexp可以是需要在 stringObject 中檢索的子字串,也可以是需要檢索的 RegExp 物件。

傳回stringObject 中第一個與 regexp 相符的子字串的起始位置。如果沒有找到任何符合的子字串,則傳回 -1。

注意:search() 方法不執行全域匹配,它將忽略標誌 g。它同時忽略 regexp 的 lastIndex 屬性,並且總是從字串的開始進行檢索,這意味著它總是傳回 stringObject 的第一個匹配的位置。

複製程式碼 程式碼如下:

var str = "Hello Microsoft!";
console.log(str.search(/Microsoft/));   //6

一致する文字列があるかどうかだけを知りたい場合、search() メソッドの使用は test() メソッドの使用とほぼ同じです。さらに詳しい情報を取得したい場合は、match() メソッドと exec() メソッドを使用できますが、効率は低くなります。

スライス()

slice() メソッドは、文字列の特定の部分を抽出し、抽出された部分を新しい文字列として返します。

stringObject.slice(開始, 終了)

パラメータ start は、抽出されるセグメントの開始インデックスです。負の数値の場合、このパラメータは文字列の末尾から開始する位置を指定します。つまり、-1 は文字列の最後の文字を指し、-2 は最後から 2 番目の文字を指し、以下同様になります。

パラメータ end は、抽出するフラグメントの末尾の直後のインデックスです。このパラメータが指定されていない場合、抽出される部分文字列には、元の文字列の先頭から末尾までの文字列が含まれます。このパラメータが負の場合、文字列の末尾からの位置を指定します。

メソッドは新しい文字列を返します。文字列 stringObject の先頭 (両端を含む) から末尾 (両端を含む) までのすべての文字が含まれます。

注: String オブジェクトのメソッド slide()、substring()、および substr() はすべて、文字列の指定された部分を返すことができます。あらゆる状況において、slice() メソッドを使用することを強くお勧めします。

コードをコピーします コードは次のとおりです:

var str = "こんにちはマイクロソフト!";
console.log(str.slice(6)); //Microsoft!
console.log(str.slice(6, 12)); //マイクロ

部分文字列()

非推奨です。代わりに、slice() を使用することをお勧めします。

substr()

非推奨です。代わりに、slice() を使用することをお勧めします。

toLocaleLowerCase()

推奨されません。トルコ語などのいくつかの言語でのみ役立ちます。代わりに toLowerCase() を使用することをお勧めします。

toLocaleUpperCase()

推奨されません。トルコ語などのいくつかの言語でのみ役立ちます。代わりに toUpperCase() を使用することをお勧めします。

toLowerCase()

toLowerCase() メソッドは、文字列を小文字に変換するために使用されます。

toUpperCase()

toUpperCase() メソッドは、文字列を大文字に変換するために使用されます。

String オブジェクトには、HTML タグ用のメソッドも多数あります:anchor()、big()、blink()、bold()、fixed()、fontcolor()、fontsize()、italics()、link()、small ()、ストライク()、サブ()、サップ()。現在では、これらを適用する人はほとんどおらず、使用はお勧めできません。

メソッドのデモンストレーション例:

コードをコピーします コードは次のとおりです:


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn