length
length 屬性可返回字串中的字元數目。
length 是根據字串的UTF-16編碼來擷取長度的,Null 字元串長度為0。length 不可修改。
charAt()
charAt() 方法可返回指定位置的字元。注意,JavaScript 並沒有一種有別於字串類型的字元資料類型,所以返回的字元是長度為 1 的字串。
stringObject.charAt(index)
參數index是必需的。表示字串中某個位置的數字,即字元在字串中的下標。字串中第一個字元的下標是 0。如果參數 index 不在 0 與 string.length 之間,該方法將返回一個Null 字元串。
注意: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() 方法可在字串內檢索指定的值,或找到一個或多個Regex的匹配。
該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字串的位置。
stringObject.match(regexp)
參數regexp可以是字串,也可以是Regex RegExp 對象。
返回存放匹配結果的數組。該數組的內容依賴於 regexp 是否具有全域標誌 g。
如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的資訊。該數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與Regex的子運算式匹配的文本。除了這些常規的數組元素之外,返回的數組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字元在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。
如果 regexp 具有標誌 g,則 match() 方法將執行全域檢索,找到 stringObject 中的所有匹配子字串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數組。不過全域匹配返回的數組的內容與前者大不相同,它的數組元素中存放的是 stringObject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。
沒有標誌g,調用 stringObject.match(regexp) 和調用 regexp.exec(stringObject) 的結果相同。在全域檢索模式下,match() 即不提供與子運算式匹配的文本的資訊,也不聲明每個匹配子串的位置。如果需要這些全域檢索的資訊,可以使用 RegExp.exec()。
注意:如果需要知道一個字串是否匹配一個Regex,使用 regexp.test(string);如果只想一次匹配,使用 regexp.exec(string) 代替 string.match(regexp)。
複製代碼 代碼如下:
var str="Hello world!"
var str2="1 plus 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() 方法用於在字串中用一些字元替換另一些字元,或替換一個與Regex匹配的子串。
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(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
)); //Aaa Bbb Ccc
search()
search() 方法用於檢索字串中指定的子字串,或檢索與Regex相匹配的子字串。
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()
slice() 方法可提取字串的某個部分,並以新的字串返回被提取的部分。
stringObject.slice(start, end)
參數start是要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字串的尾部開始算起的位置。也就是說,-1 指字串的最後一個字元,-2 指倒數第二個字元,以此類推。
參數end是緊接著要抽取的片段的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字串結尾的字串。如果該參數是負數,那麼它規定的是從字串的尾部開始算起的位置。
方法會返回一個新的字串。包括字串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)為止的所有字元。
注意:String 對象的方法 slice()、substring() 和 substr() 都可返回字串的指定部分。強烈建議在所有場合都使用 slice() 方法。
複製代碼 代碼如下:
var str = "Hello Microsoft!";
console.log(str.slice(6)); //Microsoft!
console.log(str.slice(6, 12)); //Micros
substring()
不推薦使用,建議使用slice()替代。
substr()
不推薦使用,建議使用slice()替代。
toLocaleLowerCase()
不推薦使用,只在土耳其語等少數語種中有用,建議使用toLowerCase()替代。
toLocaleUpperCase()
不推薦使用,只在土耳其語等少數語種中有用,建議使用toUpperCase()替代。
toLowerCase()
toLowerCase() 方法用於把字串轉換為小寫。
toUpperCase()
toUpperCase() 方法用於把字串轉換為大寫。
String對象還有很多用於HTML 標籤的方法:anchor()、big()、blink()、bold()、fixed()、fontcolor()、fontsize()、italics()、link()、small()、strike()、sub()、sup()。他們主要是對String對象進行HTML格式化處理,現在已經很少有人會應用到了,不推薦使用。
方法示範執行個體:
複製代碼 代碼如下:
<html>
<body>
<script type="text/javascript">
var txt="Hello World!"
document.write("<p>Big: " + txt.big() + "</p>")
document.write("<p>Small: " + txt.small() + "</p>")
document.write("<p>Bold: " + txt.bold() + "</p>")
document.write("<p>Italic: " + txt.italics() + "</p>")
document.write("<p>Blink: " + txt.blink() + " (does not work in IE)</p>")
document.write("<p>Fixed: " + txt.fixed() + "</p>")
document.write("<p>Strike: " + txt.strike() + "</p>")
document.write("<p>Fontcolor: " + txt.fontcolor("Red") + "</p>")
document.write("<p>Fontsize: " + txt.fontsize(16) + "</p>")
document.write("<p>Lowercase: " + txt.toLowerCase() + "</p>")
document.write("<p>Uppercase: " + txt.toUpperCase() + "</p>")
document.write("<p>Subscript: " + txt.sub() + "</p>")
document.write("<p>Superscript: " + txt.sup() + "</p>")
document.write("<p>Link: " + txt.link("http://www.w3school.com.cn") + "</p>")
</script>
</body>
</html>