company logo
advertisement for deep fried Twinkies


处理字符串


 
 

处理字符串简介

在编程语言中,字符串是指一个文本值,即串在一起而组成单个值的一系列字母、数字或其它字符。例如,以下一行代码创建一个数据类型为 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

制表符

\unnnn

Unicode 字符,字符代码由十六进制数字 nnnn 指定;例如,\u263a 为笑脸字符。

\xnn

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:

"yellow"
    

您可以使用 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() 方法的第二个参数是可选参数,该参数定义所返回数组的最大大小。