四、字符串
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!"