WMLScript的String库包含了一系列的用于字符串处理的函数。前文述及,字符串可以看作是一个字符数组。在该数组中,每个字符都有一个下标序号,其中左起第1个字符的序号是0,其他字符的序号由左向右依次递增。使用String库函数处理字符串时,经常需要利用字符的序号实现对字符的操作。字符串也是有长度,其长度就是数组中字符的个数。
另外,为了便于String库函数处理字符串,WMLScript允许我们可以使用指定的分隔符来分割字符串的内容。这样,某些String库函数就可以通过指定分割符和字符序号进行操作。WMLScript规定,转义字符不能用作分割符。
考虑到有些特殊字符,比如回车符等,是不能直接放在字符串中的,因此WMLScript规定了一些“空字符”,利用这些空字符就可把相应的特殊字符放在字符串中进行处理。WMLScript规定的空字符主要有6种,如表9.1所示。
表9.1 WMLScript的空字符
空字符 | 表示的特殊字符 |
TAB | 水平制表符 |
VT | 垂直制表符 |
FF | 打印机进纸 |
SP | 空格 |
LF | 换行 |
CR | 回车 |
String库包含的函数比较多,如charAt、compare、elementAt、elements、find、format、insertAt、isEmpty、length、removeAt、replace、replaceAt、squeeze、subString、toString、trim等,下面我们就分而述之。
9.3.1 length函数
length函数用于计算并返回给定字符串的长度,即字符串所含字符的个数。其语法格式为:
String.length(string)
它的参数string取值只能为合法的字符串或者能够转换为字符串的其他类型有效数据,这样计算后可以返回表示字符串长度的整数值,否则就会返回无效值invalid。
下面几条语句给出了使用length函数的例子:
var a = "ABC";
var b = String.length(a); // 返回结果为b = 3
var c = String.length(""); // 返回结果为c = 0
var d = String.length(342); // 返回结果为d = 3
9.3.2 isEmpty函数
该函数用于判断给定的字符串是否为空。如果字符串为空,那么就返回true,否则返回false。如果给定的参数值并不是合法的字符串,则返回无效值invalid。isEmpty函数的语法格式为:
String.isEmpty(string)
作为举例,我们给出判定字符串是否为空串的几个例子:
var a = "Hello";
var b = "";
var c = String.isEmpty(a); // a不是空串,所以c = false
var d = String.isEmpty(b); // b是空串,所以d = true
var e = String.isEmpty(true); // ture可以转换为字符串且不为空,所以e = false
9.3.3 charAt函数
charAt函数的功能是利用给定的参数index从给定的字符串string中返回一个长度为1的新字符串,该字符串即是string在序号index处所包含的字符。如果index是浮点数,则WMLScript首先利用Float.int( )函数将它转换为整数,然后再确定新字符串。charAt函数的语法格式如下:
String.charAt(string, index)
其中的参数string需取字符串型的数据,它是被操作的字符串;参数index需取数值型的数据,它是要取的字符在string中的序号。如果charAt函数的参数不满足这些要求,那么它的返回值就会是无效值invalid。而且,如果index超出字符串string的范围,即index比string的长度值还要大,那么charAt函数就会返回一个空字符串("")。
var a = "Monday, May 24";
var b = String.charAt(a, 0); // 序号为0的字符是串中第1个字符,故b = "M"
var c = String.charAt(a, 1); // 序号为1的字符是串中第2个字符,故c = "o"
var d = String.charAt(a, 2); // 序号为2的字符是串中第3个字符,故d = "n"
var e = String.charAt(a, 5); // 序号为5的字符是串中第6个字符,故e = "y"
var f = String.charAt(a, 100); // 100超出字符串的范围,故f = ""
var g = String.charAt(34, 0); // 34可转换为字符串再求,故g = "3"
var h = String.charAt(a, "first"); // 不符合参数类型规定,所以h = invalid
9.3.4 subString函数
subString函数的功能是根据给定的开始序号参数startIndex和欲取字符串的长度参数length,从给定的字符串string中提取生成一个子字符串。如果startIndex比0还小,那么subString函数就从序号0处提取子串。如果length的值比从序号startIndex开始所剩余的字符个数还要多,那么subString函数就会把剩余的字符作为子串返回。subString函数的语法格式为:
string.subString(string, startIndex, length)
它有3个参数,各参数取值及含义如下:
(1) string参数的取值范围限于字符串或可以合法转换为字符串的数据,它是用于提取子串的父串;
(2) startIndex参数的取值范围为数值,它是提取子串在父串中开始的序号,即从该序号指定字符开始,提取作为子串的字符;
(3) length参数的取值也需要为数值,它是提取子字符串的长度。
如果startIndex或者length是浮点数,那么WMLScript将首先利用Float.Int( )函数将它们转换为整数,然后再通过subString函数进行子字符串的提取操作。
如果各参数取值均能符合要求并有意义,则subString函数将返回提取的子字符串,否则就会返回无效值invalid。
另外,如果startIndex超过原字符串的长度,那么subString函数将返回一个空字符串。如果length小于0,则也会返回一个空字符串。
使用subString函数的例子如下:
var a = "ABCD";
var b = String.subString(a, 1, 2); // 从序号为1的第2个字符开始取,取2个字符,故b = "BC"
var c = String.subString(a, 2, 5); // 从序号为2的第3个字符开始取,取5个字符,由于5超过
//剩余字符个数,所以取剩余的字符,故c = "CD"
var d = String.subString(1234, 0, 2); // 转换1234为字符串,并从第1个字符开始取2个,故d = "12"