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() 參數和使用方法一致,只不過是從後向前搜尋。
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
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)。
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 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 的第一個匹配的位置。
一致する文字列があるかどうかだけを知りたい場合、search() メソッドの使用は test() メソッドの使用とほぼ同じです。さらに詳しい情報を取得したい場合は、match() メソッドと exec() メソッドを使用できますが、効率は低くなります。
スライス()
slice() メソッドは、文字列の特定の部分を抽出し、抽出された部分を新しい文字列として返します。
stringObject.slice(開始, 終了)
パラメータ start は、抽出されるセグメントの開始インデックスです。負の数値の場合、このパラメータは文字列の末尾から開始する位置を指定します。つまり、-1 は文字列の最後の文字を指し、-2 は最後から 2 番目の文字を指し、以下同様になります。
パラメータ end は、抽出するフラグメントの末尾の直後のインデックスです。このパラメータが指定されていない場合、抽出される部分文字列には、元の文字列の先頭から末尾までの文字列が含まれます。このパラメータが負の場合、文字列の末尾からの位置を指定します。
メソッドは新しい文字列を返します。文字列 stringObject の先頭 (両端を含む) から末尾 (両端を含む) までのすべての文字が含まれます。
注: String オブジェクトのメソッド slide()、substring()、および substr() はすべて、文字列の指定された部分を返すことができます。あらゆる状況において、slice() メソッドを使用することを強くお勧めします。
部分文字列()
非推奨です。代わりに、slice() を使用することをお勧めします。
substr()
非推奨です。代わりに、slice() を使用することをお勧めします。
toLocaleLowerCase()
推奨されません。トルコ語などのいくつかの言語でのみ役立ちます。代わりに toLowerCase() を使用することをお勧めします。
toLocaleUpperCase()
推奨されません。トルコ語などのいくつかの言語でのみ役立ちます。代わりに toUpperCase() を使用することをお勧めします。
toLowerCase()
toLowerCase() メソッドは、文字列を小文字に変換するために使用されます。
toUpperCase()
toUpperCase() メソッドは、文字列を大文字に変換するために使用されます。
String オブジェクトには、HTML タグ用のメソッドも多数あります:anchor()、big()、blink()、bold()、fixed()、fontcolor()、fontsize()、italics()、link()、small ()、ストライク()、サブ()、サップ()。現在では、これらを適用する人はほとんどおらず、使用はお勧めできません。
メソッドのデモンストレーション例:
var txt="Hello World!"
document.write("
Big: " txt.big() "
")Small: " txt.small() "
")document.write("
太字: " txt.bold() "
")イタリック: " txt.italics() "
")document.write("
Blink: " txt.blink() " (IE では動作しません)
")修正: " txt.fixed() "
")Strike: " txt.strike() "
")document.write("
Fontcolor: " txt.fontcolor("Red") "
")Fontsize: " txt.fontsize(16) "
")document.write("
Lowercase: " txt.toLowerCase() "
")Uppercase: " txt.toUpperCase() "
")document.write("
下付き文字: " txt.sub() "
")上付き文字: " txt.sup() "
")document.write("
Link: " txt.link("http://www.w3school.com.cn") "
")