使用字符串(字符串对象)

JScript中内建的最有用的对象之一是字符串对象,这个对象的方法可以用来以多种方式安排和处理字符串。例如,你可以用字符串方法以HTML格式提供一个字符串,你可以用方法来完成字符串的比较、查找、选取字符串等操作。

你通过new语句来建立一个新的字符串对象,来看下面的例子:

<%

mystring=new String(“I am a string”);

%>

<%=mystring%>

在此例中,建立了一个名为mystring的字符串对象,它含有字符串“I am a String”。当这个对象被输出时,这段文本就会被显示出来。

然而一般情况你不需要明确地建立一个字符串对象,你可以用文字串来建立一个字符串对象。例如,就象下面的脚本那样:

<%

mystring=“I am a string”;

%>

<%=mystring%>

在此例中,文字串“I am a String” 建立了一个字符串对象。在大部分情况下,这意味着你不必明确地建立一个字符串对象,你可以对这个文字串调用字符串对象的各种方法。

注意

什么时候你必须建立一个字符串对象?如果你想让一些字符串具有某些特定的属性而另一些字符串没有,这时就必须明确地建立单个的具有这些属性的字符串对象。这是因为所有缺省建立的字符串都共享一个共同的全局的字符串对象。

HTML加入字符串

字符串对象的许多方法允许你在字符串中加入各种类型的HTML格式,在下面的例子中,三个字符串都以黑体输出:

<%

mystring=“I am bold!”;

mystring2=“I am also bold!”.bold();

%>

<%=mystring.bold()%>

<%=mystring2%>

<%=“I too am bold!”.bold()%>

Bold()方法代替了字符串两边的HTML标识符〈B〉和〈/B〉,你可以这样做一下来实现同一效果,例如,当在浏览器上显示下面脚本中的两个字符串时将是一样的:

<%=“I am bold!”.bold()%>

<%=“<B>I am bold!</B>”%>

如果你选择网络浏览器上的View Source命令时,你将会发现输出的恰好是同一字符串Bold()方法,只不过使HTML格式的字符串更方便些。

Bold()方法并不是唯一的将HTML标识符附加给字符串的方法,考虑下面的脚本中所有使用的方法(图9.3为网络服务器上显示的结果):

<BR> <%=“I am big!”.big()%>

<BR> <%=“I am bold!”.bold()%>

<BR> <%=“Blink, blink”.blink()%>

<BR> <%=“I am formatted with a fixed-width font”.fixed()%>

<BR> <%=“I am in italics”.italics()%>

<BR> <%=“I am small”.small()%>

<BR> <%=“I have a line through me”.strike()%>

<BR> <%=“I am in subscript”.sub()%>

<BR> <%=“I am in superscript”.sup()%>

<BR> <%=“I am the color red”.fontcolor(“red”)%>

<BR> <%=“I am big!”.fontsize(4)%>

图9.3 使用字符串方法的显示结果

你也可使用字符串方法来建立超连接,例如,下面的脚本建立一个与各种Internet结点相连的超连接的列表:

<%= “Top Of Page”.anchor(“top”)%>

<H1> My Favorite Links </H1>

<BR> <%=“Magic”.link(“http://www.magicw3.com”)%>

<BR> <%=“Microsoft”.link(“http://www.microsoft.com”)%>

<BR> <%=“Collegescape”.link(“http://www.collegescape.com”)%>

<BR> <%=“CityAuction”.link(“http://www.cityauction.com”)%>

<P>

Back to the top of the page:

<%=“top”.link(“#top”)%>

再一次申明,你需要明确地加入HTML格式,但是如果你用这些字符串方法代替你的脚本可能会更有可读性(及变得稍短些)。

分割和搜索子串

字符串对象中包含两个在字符串中搜索子串的方法,indexof()方法从左至右搜索子串;lastIndexof()方法从右至左搜索字符串,下面的例子使用了这两个方法及它们返回的值:

<%=“The box contained three boxes”.indexOf(“box”)%>

4

<%=“The box contained three boxes”.lastIndexOf(“box”)%>

24

<%=“The box contained three boxes”.indexOf(“box”,6)%>

24

<%=“The box contained three boxes”.lastIndexOf(“box”,22)%>

4

在这些例子中,在字符串“The box contained three boxes”中搜索特定的子串,indexof()方法从左开始搜索这个字符串。lastIndexof()方法从右开始搜索这个串。当没有匹配时,每种方法都返回-1。

每个方法的搜索都是区分大小写的,因此在上述这些例子中如果搜索子串Box将返回无匹配。要进行不区分大小写的搜索,你需要把要比较的字符串都转换成同一种大小写形式。(使用下一节将要讨论的两个方法之一)

注意每种方法都从字符串的左边开始计数,从零开始,在第二句中,返回值为24,因为字符串“box”是“boxes”中的一部分。

就如从这些例子中可看到的那样,你可以指定一个整数来从字符串的某一个字符处开始搜索。在第三个例子中,子串从第一个词box中的字母x处开始进行搜索。在第四个例子中,子串从单词three中的第二个e处开始进行搜索。

如果你想从一个字符串中获得单个字符,你可以使用字符串对象中的charAt()方法,它返回字符串中特定位置处的字符。下面是一些脚本例子及它们返回的值:

<%=“The box contained three boxes”.charAt(4)%>

b

<%=“The box contained three boxes”.charAt(10)%>

n

再一次注意字符串中第一个字符的索引是0。字符串中第四个位置的字符是字母b,如果你指定的字符索引号大于字符串的长度,并不会产生错误,但什么也不会返回。

如果你要从一个字符串中分割出一个子串,你可以使用substring()方法。这个方法需要两个参数:第一个指定从哪个位置开始分割子串,第二个参数指明到哪里结束。下面是一些例子。

<%=“The box contained three boxes”.substring(4,7)%>

box

<%=“The box contained three boxes”.substring(24,29)%>

boxes

实际上,你指定子串开始和结束位置的顺序是不重要的,对于负值,这两个参数中较小值被自动当作子串的开始位置,而较大的值被当作结束位置。

当使用这些方法时,知道一个字符串的长度是很有必要的。你可以使用字符串对象的length属性来获得这个值,下面是个例子:

<%=“The box contained three boxes”.length%>

29

<%=“box”.length%>

3

<%=“”.length%>

0

改变字符串的大小写

最后,字符串对象中包括两个方法可以让你改变字符串的大小写状态。toUpperCase()方法将一个字符串全部变为大写,而toLowerCase()则将字符串变为小写。

<%=“The box contained three boxes”.toUpperCase()%>

THE BOX CONTAINED THREE BOXES

<%=“The box contained three boxes”.toLowerCase()%>

the box contained three boxes

当你需要进行不区分大小写的子串搜索时,这两个方法是特别有用的。例如,假设你需要找到字符串中第一次出现单词box的位置,不区分大小写可以如下去做:

<%=“The box contained three boxes”.toUpperCase().indexOf(“BOX”)%>

在此例中,在使用indexOf()方法来搜索子串前字符串先被全部转变为大写。通过把字符串全部转变为大写,你可以不区分大小写在字符串中搜索单词box。