处理字符串简介
在编程语言中,字符串是指一个文本值,即串在一起而组成单个值的一系列字母、数字或其它字符。例如,以下一行代码创建一个数据类型为 String 的变量,并为该变量赋予一个文本字符串值:
var albumName:String = "Three for the money";
正如此示例所示,在 ActionScript 中,可使用双引号或单引号将本文引起来以表示字符串值。以下是另外几个字符串示例:
"Hello"
"555-7649"
"http://www.adobe.com/"
每当在 ActionScript 中处理一段文本时,您都会用到字符串值。ActionScript String 类是一种可用来处理文本值的数据类型。String 实例通常用于很多其它 ActionScript 类中的属性、方法参数等。
常见的字符串处理任务
以下是本章中讨论的与字符串有关的常见任务:
- 创建 String 对象
- 处理特殊字符,如回车符、制表符和非键盘字符
- 测量字符串长度
- 隔离字符串中的各个字符
- 连接字符串
- 比较字符串
- 查找、提取以及替换字符串的各部分
- 使字符串变为大写或小写
创建字符串
在 ActionScript 3.0 中,String 类用于表示字符串(文本)数据。ActionScript 字符串既支持 ASCII 字符也支持 Unicode 字符。创建字符串的最简单方式是使用字符串文本。要声明字符串文本,请使用双直引号 ("
) 或单直引号 ('
) 字符。例如,以下两个字符串是等效的:
var str1:String = "hello";
var str2:String = 'hello';
您还可以使用 new
运算符来声明字符串,如下所示:
var str1:String = new String("hello");
var str2:String = new String(str1);
var str3:String = new String();
// str3 == ""
下面的两个字符串是等效的。
var str1:String = "hello";
var str2:String = new String("hello");
要在使用单引号 ('
) 分隔符定义的字符串文本内使用单引号 ('
),请使用反斜杠转义符 (\
)。
类似地,要在使用双引号 ("
) 分隔符定义的字符串文本内使用双引号 ("
),请使用反斜杠转义符
(\
)。下面的两个字符串是等效的:
var str1:String = "That's \"A-OK\"";
var str2:String = 'That\'s "A-OK"';
请务必记住 ActionScript 可区分单直引号 ('
) 和左右单引号 ('
或 '
)。对于双引号也同样如此。
请使用直引号来分割字符串文本。在将文本从其它来源粘贴到 ActionScript 中时,请确保使用正确
的字符。
转义序列 | 字符 |
---|
\b
| 退格符 |
\f
| 换页符 |
\n
| 换行符 |
\r
| 回车符 |
\t
| 制表符 |
\u nnnn
| Unicode 字符,字符代码由十六进制数字 nnnn 指定;例如,\u263a 为笑脸字符。 |
\x nn
| ASCII 字符,字符代码由十六进制数字 nn 指定。 |
\'
| 单引号 |
\"
| 双引号 |
\\
| 单个反斜杠字符 |
length 属性
每个字符串都有 length
属性,其值等于字符串中的字符数:
var str:String = "Adobe";
trace(str.length);
// 输出:5
空字符串和 null 字符串的长度均为 0,如下例所示:
var str1:String = new String();
trace(str1.length);
// 输出:0
str2:String = '';
trace(str2.length);
// 输出:0
处理字符串中的字符
字符串中的每个字符在字符串中都有一个索引位置(整数)。第一个字符的索引位置为 0。例如,在以
下字符串中,字符 y
的位置为 0,而字符 w
的位置为 5:
您可以使用 charAt()
方法和 charCodeAt()
方法检查字符串各个位置上的字符:
var str:String = "hello world!";
for (var:i = 0; i < str.length; i++)
{
trace(str.charAt(i), "-", str.charCodeAt(i));
}
在运行此代码时,会产生如下输出:
h - 104
e - 101
l - 108
l - 108
o - 111
- 32
w - 119
o - 111
r - 114
l - 108
d - 100
! - 33
可以获取任何类型对象的字符串表示形式。所有对象都提供了 toString()
方法来实现此目的:
var n:Number = 99.47;
var str:String = n.toString();
// str == "99.47"
连接字符串
字符串连接的含义是:将两个字符串按顺序合并为一个字符串。例如,可以使用 +
运算符来连接两
个字
符串:
var str1:String = "green";
var str2:String = "ish";
var str3:String = str1 + str2; // str3 == "greenish"
还可以使用 +=
运算符来得到相同的结果,如下例所示:
var str:String = "green";
str += "ish"; // str == "greenish"
此外,String 类还包括 concat()
方法,可按如下方式对其进行使用:
var str1:String = "Bonjour";
var str2:String = "from";
var str3:String = "Paris";
var str4:String = str1.concat(" ", str2, " ", str3);
// str4 == "Bonjour from Paris"
如果使用 +
运算符(或 +=
运算符)对 String 对象和"非"字符串的对象进行运算,ActionScript
会自动将非字符串对象转换为 String 对象以计算该表达式,如下例所示:
var str:String = "Area = ";
var area:Number = Math.PI * Math.pow(3, 2);
str = str + area; // str == "Area = 28.274333882308138"
但是,可以使用括号进行分组,为 +
运算符提供运算的上下文,如下例所示:
trace("Total: $" + 4.55 + 1.45); // 输出:Total: $4.551.45
trace("Total: $" + (4.55 + 1.45)); // 输出:Total: $6
在字符串中查找子字符串和模式
通过字符位置查找子字符串(这个很有用的)
substr()
和 substring()
方法非常类似。两个方法都返回字符串的一个子字符串。并且两个方法都具
有两个参数。在这两个方法中,第一个参数是给定字符串中起始字符的位置。不过,在 substr()
方法
中,第二个参数是要返回的子字符串的"长度",而在 substring()
方法中,第二个参数是子字符串的
"结尾"处字符的位置(该字符未包含在返回的字符串中)。此示例显示了这两种方法之间的差别:
var str:String =
"Hello from Paris, Texas!!!";
trace(str.substr(11,15)); // 输出:Paris, Texas!!!
trace(str.substring(11,15)); // 输出:Pari
如果不指定第二个参数,则返回从第一个参数开始到结束的所有字符。
slice()
方法的功能类似于 substring()
方法。当指定两个非负整数作为参数时,其运行方式将完全一
样。但是,slice()
方法可以使用负整数作为参数,此时字符位置将从字符串末尾开始向前算起,如下
例所示:
var str:String =
"Hello from Paris, Texas!!!";
trace(str.slice(11,15)); // 输出:Pari
trace(str.slice(-3,-1)); // 输出:!!
trace(str.slice(-3,26)); // 输出:!!!
trace(str.slice(-3,str.length)); // 输出:!!!
trace(str.slice(-8,-3)); // 输出:Texas
创建由分隔符分隔的子字符串数组
可使用 split()
方法创建子字符串数组,该数组根据分隔符进行划分。例如,可以将逗号分隔或制表符
分隔的字符串分为多个字符串。
以下示例说明如何使用"与"字符 (&) 作为分隔符,将数组分割为多个子字符串:
var queryStr:String = "first=joe&last=cheng&title=manager&StartDate=3/6/65";
var params:Array = queryStr.split("&", 2);
// params == ["first=joe","last=cheng"]
split()
方法的第二个参数是可选参数,该参数定义所返回数组的最大大小。