JavaScriptFAQ(六)——字串

kjmeng發表於2008-12-06

 四、字串

 

1. 字串中的引號(Quotes in String

Q:我如何在字串中插入引號呢?

A:字串中的引號應該用一個反斜槓(/)引導。如此,JavaScript就會分辨出這些引號是普通字串還是字串的分隔符。下面是示例:

string1=`It/`s five o/`clock!`;
string2="<A HREF=/"index.htm/">";

或者,如果字串中只包含有單引號,那麼你可以使用雙引號作為字串的分隔符,反之亦然。下面是一個例子:

string1="It`s five o`clock!";
string2=`<A HREF="index.htm">`;

2. 將數字轉化為字串(Converting Numbers to Strings

Q:在JavaScript中,我怎樣將數字轉化為字串?

A:最簡單的方法是數字變數加上一個空字串,例如:

a = a+`` // This converts a to string
b += ``  // This converts b to string

在上面的例子中,結果字串中儲存的是十進位制的數字,如果要轉化為二進位制、八進位制或者十六進位制(或其他任何進位制)字串,參加(轉化其他進位制 Converting to Another Base)。

 

3. 將字串轉化為數字(Converting Strings to Numbers

Q:在JavaScript中,我怎樣把字串轉化為數字呢?

A:要將字串轉化為數字,可以使用JavaScript的函式parseFloat(轉化為浮點數)或者parseInt(轉化為整數)。

 

parseFloat語法:parseFloat(`string`)

 

工作方式:

parseFloat的引數必須為字串或字串表示式。parseFloat的返回結果是字串內數字的十進位制數(或者是字串最開始的數字)。如果字串不能被解析為一個十進位制數,那麼返回值將由於瀏覽器而不同(0或者NaN)。

示例(註釋內是轉化結果):

parseFloat(`1.45kg`)  // 1.45
parseFloat(`77.3`)    // 77.3
parseFloat(`077.3`)   // 77.3
parseFloat(`0x77.3`)  // 0
parseFloat(`.3`)      // 0.3
parseFloat(`0.1e6`)   // 100000

parseInt語法:parseInt(`string` [, base])

 

工作方式:

parseInt的第一個引數必須是字串或者字串表示式。parseInt的返回結果是字串包含的一個整數(或者字串最開始的一個整數)。第二個引數(base),如果有,給出了字串中數字的進位制。引數base的值可以從2到36之間的任何一個值。

如果只有一個引數,數字的進位制會通過JavaScript的一般語法來檢測。以0x或-0x開頭的字串會被解析為十六進位制數;以0或者-0開始的字串會被解析為八進位制數;其他都作為十進位制數對待。

如果字串引數不能被解析為一個整數,返回結果也會根據瀏覽器的不同而不同(0或者NaN)。

示例(行後的註釋是轉化結果):

parseInt(`123.45`)  // 123
parseInt(`77`)      // 77
parseInt(`077`,10)  // 77
parseInt(`77`,8)    // 63  (= 7 + 7*8)
parseInt(`077`)     // 63  (= 7 + 7*8)
parseInt(`77`,16)   // 119 (= 7 + 7*16)
parseInt(`0x77`)    // 119 (= 7 + 7*16)
parseInt(`099`)     // 0 (9 is not an octal digit)
parseInt(`99`,8)    // 0 or NaN, depending on the platform
parseInt(`0.1e6`)   // 0
parseInt(`ZZ`,36)   // 1295 (= 35 + 35*36)

4. 子字串(Substrings

Q:我怎樣從一個字串中抽取一個子字串呢?

A:要從一個字串中抽取一個子字串,可以使用substring方法:

 

string.substring(start, end)

 

這裡:

string 是你想從其中抽取子字串的字串。

start 是一個數字,指定子字串開始的字元的位置。(在start位置上的字元也會包含到子字串中。)

end 是一個數字,指定子字串結束的字元的位置。(在end位置上的字元不會包含到字串中。)

注意,字串中第一個字元的位置是0,最後一個是string.length-1。

示例:

`Hello`.substring(0,2)  // `He`
`Hello`.substring(0,4)  // `Hell`
`Hello`.substring(1,3)  // `el`

5. URL-encoding

Q:我如何把一個字串轉化URL-encoding?

A:要把一個字串轉化URL編碼形式以適合作為一個查詢字串傳遞(或者,一般來說,即作為URL的一部分),可以使用escape函式。這個函式工作原理是:數字、拉丁字母和+ – * / . _ @保持不變,其他所有字串都被轉化為%XX的轉義形式,其中XX是原字元的ASCII碼。例如:

escape("It`s me!") // result: It%27s%20me%21

在可以識別Unicode的瀏覽器上(支援JavaScript1.3),函式escape會有更加複雜的動作。如果輸入是Unicode字串,將被轉化為轉義後的Unicode形式%uXXXX。

 

6. 反轉義(unescape

Q:我如何從URL-encoding轉化字串?

A:要從URL-encoding形式轉化字串,可以使用JavaScript函式unescape(string)。這個函式的工作方式是:如果字串包含形如%XX的轉義序列,其中XX代表兩個十六進位制數字,每一個轉義序列都會被ASCII碼是XX的字元替代。因此,字串保持不變。

(在可以識別Unicode的瀏覽器上,除了轉義序列%XX外,函式unescape也可以處理%uXXXX形式的轉義序列。)

例如:

unescape("It%27s%20me%21")   // result: "It`s me!"


相關文章