- JavaScript從入門到精通(第3版)
- 明日科技
- 3480字
- 2020-03-20 10:37:35
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 對字符串進行格式化
- 現代C++編程:從入門到實踐
- The Complete Rust Programming Reference Guide
- Vue.js前端開發基礎與項目實戰
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優化計算
- 零基礎學單片機C語言程序設計
- Java程序設計入門
- 遠方:兩位持續創業者的點滴思考
- Java自然語言處理(原書第2版)
- Java語言程序設計實用教程(第2版)
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- Learning ECMAScript 6
- C語言編程魔法書:基于C11標準
- C/C++程序設計教程
- 數據庫技術及應用教程上機指導與習題(第2版)
- Perl 6 Deep Dive