官术网_书友最值得收藏!

6.1 String對象

字符串是程序設計中經常用到的一種數據類型。在JavaScript中,使用String對象可以對字符串進行處理。

6.1.1 String對象的創建

String對象是動態對象,使用構造函數可以顯式創建字符串對象。String對象用于操作和處理文本串,通過它可以獲取字符串的長度,提取子字符串,以及將字符串轉換為大寫或小寫字符。

語法格式:

    var newstr=new String(StringText)

參數說明:

newstr:創建的String對象名。

StringText:可選項,表示字符串文本。

例如,創建一個String對象,代碼如下:

    var newstr=new String("歡迎使用JavaScript腳本")

實際上,JavaScript會自動在字符串與字符串對象之間進行轉換,因此,任何一個字符串常量(用單引號或雙引號括起來的字符串)都可以看作是一個String對象,可以將其直接作為對象來使用。只要在字符變量的后面加“.”,便可以直接調用String對象的屬性和方法。字符串與String對象的不同之處在于返回的typeof值,前者返回的是string類型,后者返回的是object類型。

6.1.2 String對象的屬性

在String對象中有3個屬性,分別是length、constructor和prototype。下面對這幾個屬性進行詳細介紹。

1.length屬性

length屬性用于獲得當前字符串的長度。該字符串的長度為字符串中所有字符的個數,而不是字節數(一個英文字符占一個字節,一個中文字符占兩個字節)。

語法格式:

    stringObject.length

參數說明:

stringObject:當前獲取長度的String對象名,也可以是字符變量名。

說明

通過length屬性返回的字符串長度包括字符串中的空格。

例如,獲取已創建的字符串對象newString的長度。代碼如下:

運行結果:

    7

例如,獲取自定義的字符變量newStr的長度。代碼如下:

運行結果:

    7

【例6.1】 獲取字符串變量和字符串對象的長度。(實例位置:資源包\TM\sl\6\01)

運行結果如圖6.1所示。

圖6.1 輸出字符串的長度

2.constructor屬性

constructor屬性用于引用當前對象的構造函數。

語法格式:

    stringObject.constructor

參數說明:

stringObject:String對象名或字符變量名。

例如,使用constructor屬性判斷當前對象的類型。代碼如下:

運行結果如圖6.2所示。

圖6.2 輸出對象的類型

說明

以上例子中的newStr對象,可以用字符串變量代替。該屬性是一個公共屬性,在Array、Date、Boolean和Number對象中都可以調用該屬性,用法與String對象相同。

3.prototype屬性

prototype屬性可以為字符串對象添加自定義的屬性或方法。

語法格式:

    String.prototype.name=value

參數說明:

name:要添加的屬性名或方法名。

value:添加屬性的值或執行方法的函數。

例如,給String對象添加一個自定義方法getLength,通過該方法獲取字符串的長度。代碼如下:

運行結果如圖6.3所示。

圖6.3 輸出字符串的長度

6.1.3 String對象的方法

在String對象中提供了很多處理字符串的方法,通過這些方法可以對字符串進行查找、截取、大小寫轉換以及格式化等操作。下面分別對這些方法進行詳細介紹。

1.查找字符串

字符串對象中提供了很多用于查找字符串中字符或子字符串的方法。

(1)charAt()方法

charAt()方法可以返回字符串中指定位置的字符。

語法格式:

    stringObject.charAt(index)

參數說明:

stringObject:String對象名或字符變量名。

index:必選參數,表示字符串中某個位置的數字,即字符在字符串中的下標。

說明

字符串中第一個字符的下標是0,因此,index參數的取值范圍是0~string.length-1。如果參數index超出了這個范圍,則返回一個空字符串。

例如,在字符串“你好JavaScript”中返回下標為1的字符,代碼如下:

運行結果:

    

(2)indexOf()方法

indexOf()方法可以返回某個子字符串在字符串中首次出現的位置。

語法格式:

    stringObject.indexOf(substring,startindex)

參數說明:

stringObject:String對象名或字符變量名。

substring:必選參數,要在字符串中查找的子字符串。

startindex:可選參數,用于指定在字符串中開始查找的位置,取值范圍是0~stringObject.length-1。如果省略該參數,則從字符串的首字符開始查找。如果要查找的子字符串沒有出現,則返回-1。

例如,在字符串“你好JavaScript”中進行不同的檢索,代碼如下:

運行結果:

    3
    5
    -1

【例6.2】 獲取指定字符在字符串中出現的次數。(實例位置:資源包\TM\sl\6\02)

運行結果如圖6.4所示。

圖6.4 獲取指定字符出現的次數

(3)lastIndexOf()方法

lastIndexOf()方法可以返回某個子字符串在字符串中最后出現的位置。

語法格式:

    stringObject.lastIndexOf(substring,startindex)

參數說明:

stringObject:String對象名或字符變量名。

substring:必選參數,要在字符串中查找的子字符串。

startindex:可選參數,用于指定在字符串中開始查找的位置,在這個位置從后向前查找。它的取值范圍是0~stringObject.length-1。如果省略該參數,則從字符串的最后一個字符開始查找。如果要查找的子字符串沒有出現,則返回-1。

例如,在字符串“你好JavaScript”中進行不同的檢索,代碼如下:

運行結果:

    5
    3
    -1
2.截取字符串

(1)slice()方法

slice()方法可以提取字符串的片段,并在新的字符串中返回被提取的部分。

語法格式:

    stringObject.slice(startindex,endindex)

參數說明:

stringObject:String對象名或字符變量名。

startindex:必選參數,用于指定要提取的字符串片段的開始位置。該參數可以是負數,如果是負數,則從字符串的尾部開始算起。也就是說,-1指字符串的最后一個字符,-2指倒數第二個字符,以此類推。

endindex:可選參數,用于指定要提取的字符串片段的結束位置。如果省略該參數,表示結束位置為字符串的最后一個字符。如果該參數是負數,則從字符串的尾部開始算起。

例如,在字符串“你好JavaScript”中提取子字符串,代碼如下:

運行結果:

    JavaScript
    Java
    你好Java

(2)substr()方法

substr()方法可以從字符串的指定位置開始提取指定長度的子字符串。

語法格式:

    stringObject.substr(startindex,length)

參數說明:

stringObject:String對象名或字符變量名。

startindex:必選參數,用于指定要提取的字符串片段的開始位置。該參數可以是負數,如果是負數,則從字符串的尾部開始算起。

length:可選參數,用于指定提取的子字符串的長度。如果省略該參數,表示結束位置為字符串的最后一個字符。

例如,在字符串“你好JavaScript”中提取指定個數的字符,代碼如下:

運行結果:

    JavaScript
    Java

【例6.3】 在開發Web程序時,為了保持整個頁面的合理布局,經常需要對一些超長輸出的字符串內容(如公告標題、公告內容、文章標題、文章內容等)進行截取,并通過“…”代替省略內容。本實例將應用substr()方法截取超長字符串。(實例位置:資源包\TM\sl\6\03)

運行結果如圖6.5所示。

圖6.5 輸出字符串的長度

(3)substring()方法

substring()方法用于提取字符串中兩個指定的索引號之間的字符。

語法格式:

    stringObject.substring(startindex,endindex)

參數說明:

stringObject:String對象名或字符變量名。

startindex:必選參數。一個非負整數,指定要提取的字符串片段的開始位置。

endindex:可選參數。一個非負整數,指定要提取的字符串片段的結束位置。如果省略該參數,表示結束位置為字符串的最后一個字符。

說明

①使用substring()方法提取的字符串片段中,不包括endindex下標所對應的字符。

②如果參數startindex與endindex相等,那么該方法返回的是一個空字符串。如果startindex比endindex大,那么JavaScript會自動交換這兩個參數值。

例如,在字符串“你好JavaScript”中提取子字符串,代碼如下:

運行結果:

    JavaScript
    Java
    Ja
3.大小寫轉換

(1)toLowerCase()方法

toLowerCase()方法用于把字符串轉換為小寫。

語法格式:

    stringObject.toLowerCase()

參數說明:

stringObject:String對象名或字符變量名。

例如,將字符串“你好JavaScript”中的大寫字母轉換為小寫,代碼如下:

運行結果:

    你好javascript

(2)toUpperCase()方法

toUpperCase()方法用于把字符串轉換為大寫。

語法格式:

    stringObject.toUpperCase()

參數說明:

stringObject:String對象名或字符變量名。

例如,將字符串“你好JavaScript”中的小寫字母轉換為大寫,代碼如下:

運行結果:

    你好JAVASCRIPT
4.連接和拆分

(1)concat()方法

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

語法格式:

    stringObject.concat(string1,string2,…)

參數說明:

stringObject:String對象名或字符變量名。

string:必選參數,表示將被連接的字符串,可以是一個或多個。

例如,定義兩個字符串,然后應用concat()方法對兩個字符串進行連接。代碼如下:

    var str1="你好";
    var str2="JavaScript";
    document.write(str1.concat(str2));

運行結果:

    你好JavaScript

(2)split()方法

split()方法用于把一個字符串分割成字符串數組。

語法格式:

    stringObject.split(separator,limit)

參數說明:

stringObject:String對象名或字符變量名。

separator:必選參數,用于指定分割符。該參數可以是字符串,也可以是正則表達式。如果把空字符串("")作為分割符,那么字符串對象中的每個字符都會被分割。

limit:可選參數,用于指定返回數組的最大長度。如果設置了該參數,返回的數組元素個數不會多于這個參數。如果省略該參數,整個字符串都會被分割,不考慮數組元素的個數。

例如,將字符串“I like JavaScript”按照不同方式進行分割,代碼如下:

    var str="I like JavaScript";
    document.write(str.split(" ")+"<br>");
    document.write(str.split("")+"<br>");
    document.write(str.split(" ",2));

運行結果:

    I,like,JavaScript
    I, ,l,i,k,e, ,J,a,v,a,S,c,r,i,p,t
    I,like

【例6.4】 對字符串以指定分隔符進行拆分,再將字符串數組中的內容以另一個分隔符進行連接,從而組合成一個新的字符串。(實例位置:資源包\TM\sl\6\04)

運行結果如圖6.6所示。

圖6.6 分割合成字符串

【例6.5】 在開發網絡應用程序時,經常會遇到由系統自動生成指定位數的隨機字符串的情況,例如,生成隨機密碼或驗證碼等。本實例將實現生成指定位數的隨機字符串的功能。(實例位置:資源包\TM\sl\6\05)

實現步驟如下:

(1)在頁面中創建表單,在表單中添加一個用于輸入生成隨機字符串位數的文本框和一個“生成”按鈕,代碼如下:

(2)編寫隨機生成指定位數的字符串的函數ranStr()。該函數只有一個參數digit,用于指定生成的隨機字符串的位數,代碼如下:

(3)在“生成”按鈕的onClick事件中調用ranStr()函數生成隨機字符串,代碼如下:

    <input type="button" value="生成" onClick="ranStr(form.digit.value)"/>

運行結果如圖6.7所示。

圖6.7 生成隨機字符串

5.格式化字符串

在字符串對象中還有一些用來格式化字符串的方法,這些方法如表6.1所示。

表6.1 String對象中格式化字符串的方法

例如,將字符串“你好JavaScript”按照不同的格式進行輸出,代碼如下:

運行結果如圖6.8所示。

圖6.8 對字符串進行格式化

主站蜘蛛池模板: 乃东县| 尖扎县| 高平市| 五河县| 永平县| 莱州市| 北碚区| 郴州市| 佳木斯市| 宁化县| 娄底市| 迁西县| 和平区| 洪湖市| 岳普湖县| 江华| 阆中市| 南江县| 伊川县| 白河县| 汉源县| 漳州市| 柞水县| 松桃| 炎陵县| 山阳县| 弋阳县| 环江| 崇州市| 峨眉山市| 清苑县| 菏泽市| 新田县| 亚东县| 泌阳县| 锡林浩特市| 平谷区| 长治市| 鄂州市| 新晃| 故城县|