JavaScript String 對象


JavaScript String 對象

 

  語法:

        var str1 = new String();

        var str2 = "";

 

 

 

 

 

字符串的屬性

屬性 描述
constructor 對創建該對象的函數的引用
length 字符串的長度
prototype 允許您向對象添加屬性和方法

 

 

 

 

 

String 對象方法 

方法 描述
concat() 連接字符串。
anchor() 創建 HTML 錨。
big() 用大號字體顯示字符串。
blink() 顯示閃動字符串。
bold() 使用粗體顯示字符串。
charAt() 返回在指定位置的字符。
charCodeAt() 返回在指定的位置的字符的 Unicode 編碼。
fixed() 以打字機文本顯示字符串。
fontcolor() 使用指定的顏色來顯示字符串。
fontsize() 使用指定的尺寸來顯示字符串。
fromCharCode() 從字符編碼創建一個字符串。
indexOf() 檢索字符串。
italics() 使用斜體顯示字符串。
lastIndexOf() 從后向前搜索字符串。
link() 將字符串顯示為鏈接。
match() 找到一個或多個正則表達式的匹配。
replace() 替換與正則表達式匹配的子串。
search() 檢索與正則表達式相匹配的值。
slice() 提取字符串的片斷,並在新的字符串中返回被提取的部分。
small() 使用小字號來顯示字符串。
split() 把字符串分割為字符串數組。
strike() 使用刪除線來顯示字符串。
sub() 把字符串顯示為下標。
substr() 從起始索引號提取字符串中指定數目的字符。
substring() 提取字符串中兩個指定的索引號之間的字符。
sup() 把字符串顯示為上標。
toSource() 代表對象的源代碼。
toString() 返回字符串。
valueOf() 返回某個字符串對象的原始值。

concat() 

用於把一個或多個字符串連接到 String 對象的原始值上。該方法返回的是 String 原始值,保持原始的 String 對象不變:

var oStringObject = new String("hello ");
var sResult = oStringObject.concat("world");
alert(sResult);		//輸出 "hello world"
alert(oStringObject);	//輸出 "hello "

 

 

 

 

在上面這段代碼中,調用 concat() 方法返回的是 "hello world",而 String 對象存放的仍然是 "hello "。出於這種原因,較常見的是用加號(+)連接字符串,因為這種形式從邏輯上表明了真正的

var oStringObject = new String("hello ");
var sResult = oStringObject + "world";
alert(sResult);		//輸出 "hello world"
alert(oStringObject);	//輸出 "hello "

 

 

 

 

indexOf() 和 lastIndeOf() 

indexOf() 和 lastIndexOf() 方法返回的都是指定的子串在另一個字符串中的位置,如果沒有找不到子串,則返回 -1。

這兩個方法的不同之處在於,indexOf() 方法是從字符串的開頭(位置 0)開始檢索字符串,而 lastIndexOf() 方法則是從字符串的結尾開始檢索子串。例如:

var oStringObject = new String("hello world!");
alert(oStringObject.indexOf("o"));		輸出 "4"
alert(oStringObject.lastIndexOf("o"));	輸出 "7"

 

 

 

 

在這里,第一個 "o" 字符串出現在位置 4,即 "hello" 中的 "o";最后一個 "o" 出現在位置 7,即 "world" 中的 "o"。如果該字符串中只有一個 "o" 字符串,那么 indexOf() 和 lastIndexOf() 方法返回的位置相同。

 

localeCompare() 

下一個方法是 localeCompare(),對字符串進行排序。該方法有一個參數 - 要進行比較的字符串,返回的是下列三個值之一:

  • 如果 String 對象按照字母順序排在參數中的字符串之前,返回負數。
  • 如果 String 對象等於參數中的字符串,返回 0。
  • 如果 String 對象按照字母順序排在參數中的字符串之后,返回正數。

注釋:如果返回負數,那么最常見的是 -1,不過真正返回的是由實現決定的。如果返回正數,那么同樣的,最常見的是 1,不過真正返回的是由實現決定的。

示例如下:

var oStringObject = new String("yellow");
alert(oStringObject.localeCompare("brick"));		//輸出 "1"
alert(oStringObject.localeCompare("yellow"));		//輸出 "0"
alert(oStringObject.localeCompare("zoo"));		//輸出 "-1"

 

 

 

 

在這段代碼中,字符串 "yellow" 與 3 個值進行了對比,即 "brick"、"yellow" 和 "zoo"。由於按照字母順序排列,"yellow" 位於 "brick" 之后,所以 localeCompare() 返回 1;"yellow" 等於 "yellow",所以 localeCompare() 返回 0;"zoo" 位於 "yellow" 之后,localeCompare() 返回 -1。再強調一次,由於返回的值是由實現決定的,所以最好以下面的方式調用 localeCompare() 方法:

var oStringObject1 = new String("yellow");
var oStringObject2 = new String("brick");

var iResult = oStringObject1.localeCompare(oStringObject2);

if(iResult < 0) {
  alert(oStringObject1 + " comes before " + oStringObject2);
} else if (iResult > 0) {
  alert(oStringObject1 + " comes after " + oStringObject2);
} else {
  alert("The two strings are equal");
}

 

 

 

 

 

 

 

 

采用這種結構,可以確保這段代碼在所有實現中都能正確運行。

localeCompare() 方法的獨特之處在於,實現所處的區域(locale,兼指國家/地區和語言)確切說明了這種方法運行的方式。在美國,英語是 ECMAScript 實現的標准語言,localeCompare() 是區分大小寫的,大寫字母在字母順序上排在小寫字母之后。不過,在其他區域,情況可能並非如此。

 

slice() 和 substring()

ECMAScript 提供了兩種方法從子串創建字符串值,即 slice() 和 substring()。這兩種方法返回的都是要處理的字符串的子串,都接受一個或兩個參數。第一個參數是要獲取的子串的起始位置,第二個參數(如果使用的話)是要獲取子串終止前的位置(也就是說,獲取終止位置處的字符不包括在返回的值內)。如果省略第二個參數,終止位就默認為字符串的長度。

與 concat() 方法一樣,slice() 和 substring() 方法都不改變 String 對象自身的值。它們只返回原始的 String 值,保持 String 對象不變。

var oStringObject = new String("hello world");
alert(oStringObject.slice("3"));		//輸出 "lo world"
alert(oStringObject.substring("3"));		//輸出 "lo world"
alert(oStringObject.slice("3", "7"));		//輸出 "lo w"
alert(oStringObject.substring("3", "7"));	//輸出 "lo w"

 

 

 

 

 

在這個例子中,slice() 和 substring() 的用法相同,返回值也一樣。當只有參數 3 時,兩個方法返回的都是 "lo world",因為 "hello" 中的第二個 "l" 位於位置 3 上。當有兩個參數 "3" 和 "7" 時,兩個方法返回的值都是 "lo w"("world" 中的字母 "o" 位於位置 7 上,所以它不包括在結果中)。

為什么有兩個功能完全相同的方法呢?事實上,這兩個方法並不完全相同,不過只在參數為負數時,它們處理參數的方式才稍有不同。

對於負數參數,slice() 方法會用字符串的長度加上參數,substring() 方法則將其作為 0 處理(也就是說將忽略它)。例如:

var oStringObject = new String("hello world");
alert(oStringObject.slice("-3"));		//輸出 "rld"
alert(oStringObject.substring("-3"));	//輸出 "hello world"
alert(oStringObject.slice("3, -4"));		//輸出 "lo w"
alert(oStringObject.substring("3, -4"));	//輸出 "hel"

 

 

 

 

 

這樣即可看出 slice() 和 substring() 方法的主要不同。

當只有參數 -3 時,slice() 返回 "rld",substring() 則返回 "hello world"。這是因為對於字符串 "hello world",slice("-3") 將被轉換成 slice("8"),而 substring("-3") 將被轉換成 substring("0")。

同樣,使用參數 3 和 -4 時,差別也很明顯。slice() 將被轉換成 slice(3, 7),與前面的例子相同,返回 "lo w"。而 substring() 方法則將兩個參數解釋為 substring(3, 0),實際上即 substring(0, 3),因為 substring() 總把較小的數字作為起始位,較大的數字作為終止位。因此,substring("3, -4") 返回的是 "hel"。這里的最后一行代碼用來說明如何使用這些方法。

 

toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()

最后一套要討論的方法涉及大小寫轉換。有 4 種方法用於執行大小寫轉換,即

  • toLowerCase()
  • toLocaleLowerCase()
  • toUpperCase()
  • toLocaleUpperCase()

從名字上可以看出它們的用途,前兩種方法用於把字符串轉換成全小寫的,后兩種方法用於把字符串轉換成全大寫的。

toLowerCase() 和 toUpperCase() 方法是原始的,是以 java.lang.String 中相同方法為原型實現的。

toLocaleLowerCase() 和 toLocaleUpperCase() 方法是基於特定的區域實現的(與 localeCompare() 方法相同)。在許多區域中,區域特定的方法都與通用的方法完全相同。不過,有幾種語言對 Unicode 大小寫轉換應用了特定的規則(例如土耳其語),因此必須使用區域特定的方法才能進行正確的轉換。

var oStringObject = new String("Hello World");
alert(oStringObject.toLocaleUpperCase());	//輸出 "HELLO WORLD"
alert(oStringObject.toUpperCase());		//輸出 "HELLO WORLD"
alert(oStringObject.toLocaleLowerCase());	//輸出 "hello world"
alert(oStringObject.toLowerCase());		//輸出 "hello world"

 

 

 

 

 

這段代碼中,toUpperCase() 和 toLocaleUpperCase() 輸出的都是 "HELLO WORLD",toLowerCase() 和 toLocaleLowerCase() 輸出的都是 "hello world"。一般來說,如果不知道在以哪種編碼運行一種語言,則使用區域特定的方法比較安全。

提示:記住,String 對象的所有屬性和方法都可應用於 String 原始值上,因為它們是偽對象。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM