JavaScript FAQ(六)

四、字符串

1. 字符串中的引号(Quotes in String

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

A:字符串中的引号应该用一个反斜杠(\)引导。如此,JavaScript就会分辨出这些引号是普通字符串还是字符串的分隔符。下面是示例:

  1. string1='It\'sfiveo\'clock!';
  2. string2="<AHREF=\"index.htm\">";

或者,如果字符串中只包含有单引号,那么你可以使用双引号作为字符串的分隔符,反之亦然。下面是一个例子:

  1. string1="It'sfiveo'clock!";
  2. string2='<AHREF="index.htm">';

2. 将数字转化为字符串(Converting Numbers to Strings

Q:在JavaScript中,我怎样将数字转化为字符串?

A:最简单的方法是数字变量加上一个空字符串,例如:

  1. a=a+''//Thisconvertsatostring
  2. b+=''//Thisconvertsbtostring

在上面的例子中,结果字符串中保存的是十进制的数字,如果要转化为二进制、八进制或者十六进制(或其他任何进制)字符串,参加(转化其他进制 Converting to Another Base)。

3. 将字符串转化为数字(Converting Strings to Numbers

Q:在JavaScript中,我怎样把字符串转化为数字呢?

A:要将字符串转化为数字,可以使用JavaScript的函数parseFloat(转化为浮点数)或者parseInt(转化为整数)。

parseFloat语法:parseFloat('string')

工作方式:

parseFloat的参数必须为字符串或字符串表达式。parseFloat的返回结果是字符串内数字的十进制数(或者是字符串最开始的数字)。如果字符串不能被解析为一个十进制数,那么返回值将由于浏览器而不同(0或者NaN)。

示例(注释内是转化结果):

  1. parseFloat('1.45kg')//1.45
  2. parseFloat('77.3')//77.3
  3. parseFloat('077.3')//77.3
  4. parseFloat('0x77.3')//0
  5. parseFloat('.3')//0.3
  6. parseFloat('0.1e6')//100000

parseInt语法:parseInt('string' [, base])

工作方式:

parseInt的第一个参数必须是字符串或者字符串表达式。parseInt的返回结果是字符串包含的一个整数(或者字符串最开始的一个整数)。第二个参数(base),如果有,给出了字符串中数字的进制。参数base的值可以从2到36之间的任何一个值。

如果只有一个参数,数字的进制会通过JavaScript的一般语法来检测。以0x或-0x开头的字符串会被解析为十六进制数;以0或者-0开始的字符串会被解析为八进制数;其他都作为十进制数对待。

如果字符串参数不能被解析为一个整数,返回结果也会根据浏览器的不同而不同(0或者NaN)。

示例(行后的注释是转化结果):

  1. parseInt('123.45')//123
  2. parseInt('77')//77
  3. parseInt('077',10)//77
  4. parseInt('77',8)//63(=7+7*8)
  5. parseInt('077')//63(=7+7*8)
  6. parseInt('77',16)//119(=7+7*16)
  7. parseInt('0x77')//119(=7+7*16)
  8. parseInt('099')//0(9isnotanoctaldigit)
  9. parseInt('99',8)//0orNaN,dependingontheplatform
  10. parseInt('0.1e6')//0
  11. 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。

示例:

  1. 'Hello'.substring(0,2)//'He'
  2. 'Hello'.substring(0,4)//'Hell'
  3. '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!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值