顶级
public final class String
继承String Inheritance Object

运行时版本: AIR 1.0 Flash Player 9

String 类为表示一串字符的数据类型。String 类提供了处理原始字符串值类型的方法和属性。可以使用 String() 函数将任意对象的值转换为 String 数据类型的对象。

String 类的所有方法(concat()fromCharCode()slice()substr() 除外)都是通用方法,这意味着在对这些方法执行操作前,这些方法都将调用 toString(),并且可以将这些方法用于其它非 String 对象。

因为所有字符串索引都是从零开始的,所以任何字符串 x 的最后一个字符的索引都是 x.length - 1

不论是使用构造函数方法 new String() 创建新的字符串变量,还是只分配字符串文本值,都可以调用 String 类的任何方法。与以前的 ActionScript 版本不同,现在,使用构造函数、全局函数和只分配字符串文本值之间没有差别。下面这几行代码是等同的:

 var str:String = new String("foo");
 var str:String = "foo";
 var str:String = String("foo");

将字符串变量设置为 undefined 时,Adobe ® Flash ® Player 会将 undefined 强制为 null。所以,以下语句:

 var s:String = undefined;
将值设置为 null 而不是 undefined。如果需要使用 undefined,请使用 String() 函数。

查看示例

另请参见

String Function
Data type descriptions
Type conversions
Working with strings
Regular expression syntax


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  length : int
[只读 (read-only)] 一个整数,它指定在所指定的 String 对象中的字符数。
String
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
创建已初始化为指定字符串的新 String 对象。
String
  
charAt(index:Number = 0):String
返回由参数 index 指定的位置处的字符。
String
  
返回位于指定索引位置处的字符的数值 Unicode 字符代码。
String
  
在 String 对象末尾追加补充参数(如果需要,将它们转换为字符串)并返回结果字符串。
String
  
[静态] 返回一个字符串,该字符串由参数中的 Unicode 字符代码所表示的字符组成。
String
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
indexOf(val:String, startIndex:Number = 0):int
搜索字符串,并返回在调用字符串内的 startIndex 位置或在该位置之后找到的第一个 val 匹配项的位置。
String
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
lastIndexOf(val:String, startIndex:Number = 0x7FFFFFFF):int
从右向左搜索字符串,并返回在 startIndex 之前找到的最后一个 val 匹配项的索引。
String
  
localeCompare(other:String, ... values):int
比较两个或更多个字符串的排序顺序,并返回整数形式的比较结果。
String
  
match(pattern:*):Array
将指定的 pattern 与字符串匹配。
String
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
replace(pattern:*, repl:Object):String
对字符串匹配指定模式并返回一个新字符串,其中的第一个模式匹配项被替换为 repl 所指定的内容。
String
  
search(pattern:*):int
搜索指定的 pattern 并返回第一个匹配子字符串的索引。
String
 Inherited
设置循环操作动态属性的可用性。
Object
  
slice(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String
返回一个字符串,该字符串包括从 startIndex 字符一直到 endIndex 字符(但不包括该字符)之间的所有字符。
String
  
split(delimiter:*, limit:Number = 0x7fffffff):Array
将 String 对象拆分为一个子字符串数组,方法是在所有出现指定 delimiter 参数的位置进行拆分。
String
  
substr(startIndex:Number = 0, len:Number = 0x7fffffff):String
返回一个子字符串,该子字符串中的字符是通过从指定的 startIndex 开始,按照 len 指定的长度截取所得的。
String
  
substring(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String
返回一个字符串,其中包含由 startIndex 指定的字符和一直到 endIndex - 1 的所有字符。
String
  
返回此字符串的一个副本,其中所有大写的字符均转换为小写字符。
String
  
返回此字符串的一个副本,其中所有小写的字符均转换为大写字符。
String
  
返回此字符串的一个副本,其中所有大写的字符均转换为小写字符。
String
 Inherited
返回指定对象的字符串表示形式。
Object
  
返回此字符串的一个副本,其中所有小写的字符均转换为大写字符。
String
  
返回 String 实例的原始值。
String
属性详细信息
length属性
length:int  [只读 (read-only)]

运行时版本: AIR 1.0 Flash Player 9

一个整数,它指定在所指定的 String 对象中的字符数。

因为所有字符串索引都是从零开始的,所以任何字符串 x 的最后一个字符的索引都是 x.length - 1



实现
    public function get length():int

另请参见

构造函数详细信息
String()构造函数
public function String(val:String)

运行时版本: AIR 1.0 Flash Player 9

创建已初始化为指定字符串的新 String 对象。

注意:由于字符串文本比 String 对象需要的开销少且通常更易于使用,所以,除非有充分的理由要使用 String 对象而不是字符串文本,否则应该使用字符串文本而不是 String 类。

参数
val:String — 新 String 对象的初始值。

另请参见

方法详细信息
charAt()方法
AS3 function charAt(index:Number = 0):String

运行时版本: AIR 1.0 Flash Player 9

返回由参数 index 指定的位置处的字符。如果 index 不是从 0 到 string.length - 1 之间的数字,则返回一个空字符串。

此方法与 String.charCodeAt() 类似,所不同的是它返回的值是一个字符,而不是 16 位整数字符代码。

参数

index:Number (default = 0) — 一个整数,指定字符在字符串中的位置。第一个字符由 0 指示,最后一个字符由 my_str.length - 1 指示。

返回
String — 指定索引处的字符。或者,如果指定的索引不在该字符串的索引范围内,则为一个空字符串。

另请参见

charCodeAt()方法 
AS3 function charCodeAt(index:Number = 0):Number

运行时版本: AIR 1.0 Flash Player 9

返回指定 index 处的字符的数值 Unicode 字符代码。如果 index 不是从 0 到 string.length - 1 之间的数字,则返回 NaN

此方法与 String.charAt() 类似,所不同的是它返回的值是 16 位整型字符代码,而不是实际的字符。

参数

index:Number (default = 0) — 一个整数,指定字符在字符串中的位置。第一个字符由 0, 指示,最后一个字符由 my_str.length - 1 指示。

返回
Number — 指定索引处的字符的 Unicode 字符代码。或者,如果索引不在此字符串的索引范围内,则为 NaN

另请参见

concat()方法 
AS3 function concat(... args):String

运行时版本: AIR 1.0 Flash Player 9

在 String 对象末尾追加补充参数(如果需要,将它们转换为字符串)并返回结果字符串。源 String 对象的原始值保持不变。

参数

... args — 0 个或多个要连接的值。

返回
String — 由该字符串与指定的参数连接而成的新字符串。

另请参见

fromCharCode()方法 
AS3 static function fromCharCode(... charCodes):String

运行时版本: AIR 1.0 Flash Player 9

返回一个字符串,该字符串由参数中的 Unicode 字符代码所表示的字符组成。

参数

... charCodes — 一系列表示 Unicode 值的十进制整数。

返回
String — 指定的 Unicode 字符代码的字符串值。

另请参见

indexOf()方法 
AS3 function indexOf(val:String, startIndex:Number = 0):int

运行时版本: AIR 1.0 Flash Player 9

搜索字符串,并返回在调用字符串内 startIndex 位置上或之后找到的 val 的第一个匹配项的位置。此索引从 0 开始,这意味着字符串的第一个字符位于索引 0,而不是索引 1。如果未找到 val,则该方法返回 -1。

参数

val:String — 要搜索的子字符串。
 
startIndex:Number (default = 0) — 一个可选整数,指定搜索的起始索引。

返回
int — 指定子字符串的第一个匹配项的索引,或 -1

另请参见

lastIndexOf()方法 
AS3 function lastIndexOf(val:String, startIndex:Number = 0x7FFFFFFF):int

运行时版本: AIR 1.0 Flash Player 9

从右向左搜索字符串,并返回在 startIndex 之前找到的最后一个 val 匹配项的索引。此索引从零开始,这意味着第一个字符位于索引 0 处,最后一个字符位于 string.length - 1 处。如果未找到 val,则该方法返回 -1

参数

val:String — 要搜索的字符串。
 
startIndex:Number (default = 0x7FFFFFFF) — 一个可选整数,指定开始搜索 val 的起始索引。默认为允许的最大索引值。如果未指定 startIndex,则从字符串中的最后一项开始搜索。

返回
int — 指定子字符串的最后一个匹配项的位置,或 -1(如果未找到)。

另请参见

localeCompare()方法 
AS3 function localeCompare(other:String, ... values):int

比较两个或更多个字符串的排序顺序,并返回整数形式的比较结果。虽然此方法旨在以特定于区域设置的方式处理比较,但 ActionScript 3.0 实现生成的结果与其它字符串比较的结果相同,例如,等于 (==) 或不等于 (!=) 运算符。如果字符串相等,则返回值为 0。如果原始字符串值在 other 指定的字符串值之前,则返回值为负整数,该值的绝对值表示这两个字符串值之间不相同的字符数。如果原始字符串值在 other 之后,返回值为正整数,该值的绝对值表示这两个字符串值之间不相同的字符数。

参数

other:String — 要比较的字符串值。
 
... values — 由多个要比较的字符串组成的集合(可选)。

返回
int — 值为 0(如果字符串相等)。否则为一个负整数(如果原始字符串在字符串参数之前)或一个正整数(如果字符串参数在原始字符串之前)。在这两种情况下,该数值的绝对值都表示这两个字符串之间的区别。
match()方法 
AS3 function match(pattern:*):Array

将指定的 pattern 与字符串匹配。

参数

pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。如果 pattern 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。

返回
Array — 一个字符串数组,其中包括与指定的 pattern 匹配的字符串中的所有子字符串。

如果 pattern 是正则表达式,为了返回一个具有多个匹配子字符串的数组,必须在该正则表达式中设置 g(全局)标志:

  • 如果设置 g(全局)标志,则返回的数组包含的匹配项将不多于一项,且正则表达式的 lastIndex 属性保持不变。
  • 如果设置 g(全局)标志,则该方法从字符串的起始处(索引位置 0)开始搜索。如果匹配的子字符串为空字符串(正则表达式为 /x*/ 时可能出现此情况),则该方法将此空字符串添加到匹配项数组,然后在下一个索引位置继续搜索。该方法完成后,将正则表达式的 lastIndex 属性设置为 0。

如果未找到匹配项,该方法返回 null。如果未传递值(或传递了未定义的值)作为 pattern 参数,则该方法返回 null

另请参见

replace()方法 
AS3 function replace(pattern:*, repl:Object):String

相对于字符串匹配指定的 pattern 并返回一个新字符串,其中的第一个 pattern 匹配项被替换为 repl 所指定的内容。pattern 参数可以是字符串或正则表达式。repl 参数可以是字符串或函数;如果是函数,将插入由该函数返回的字符串以替换匹配项。未修改原始字符串。

在下面的示例中,仅替换“sh”(区分大小写)的第一个实例:

 var myPattern:RegExp = /sh/;  
 var str:String = "She sells seashells by the seashore.";
 trace(str.replace(myPattern, "sch"));  
    // She sells seaschells by the seashore.

在下面的示例中,替换“sh”(区分大小写)的所有实例,这是因为在正则表达式中设置了 g(全局)标志:

 var myPattern:RegExp = /sh/g;  
 var str:String = "She sells seashells by the seashore.";
 trace(str.replace(myPattern, "sch"));  
    // She sells seaschells by the seaschore.

在下面的示例中,替换“sh”的所有实例,这是因为在正则表达式中设置了 g(全局)标志,并且匹配时 区分大小写,因为设置了 i(忽略大小写)标志:

 var myPattern:RegExp = /sh/gi;  
 var str:String = "She sells seashells by the seashore.";
 trace(str.replace(myPattern, "sch"));  
    // sche sells seaschells by the seaschore.

参数

pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。如果指定的 pattern 参数是除字符串或正则表达式以外的任何其它对象,将对该参数应用 toString() 方法,并使用结果字符串作为 pattern 来执行 replace() 方法。
 
repl:Object — 通常是以插入的字符串替换匹配内容。但也可以指定一个函数作为此参数。如果指定一个函数,将插入由该函数返回的字符串来替换匹配内容。

如果指定一个字符串作为 repl 参数,并指定一个正则表达式作为 pattern 参数,则可以在 repl 字符串中使用以下特殊的 $ 替换代码

$ 代码 替换文本
$$ $
$& 匹配的子字符串。
$` 字符串中位于匹配的子字符串前面的部分。请注意,此代码使用左直单引号字符 (`),而不是直单引号字符 (') 或左弯单引号字符 (‘)。
$' 字符串中位于匹配的子字符串后面的部分。请注意,此代码使用直单引号字符 (')。
$n n 个捕获的括号组匹配项,其中 n 是 1-9 之间的数字,而且 $n 后面没有十进制数字。
$nn nn 个捕获的括号组匹配项,其中 nn 是一个十进制的两位数 (01-99)。如果未定义第 nn 个捕获内容,则替换文本为空字符串。

例如,下面说明了如何使用 $2$1 替换代码,它们分别表示匹配的第一个和第二个捕获组:

var str:String = "flip-flop";
 var pattern:RegExp = /(\w+)-(\w+)/g;
 trace(str.replace(pattern, "$2-$1")); // flop-flip

指定一个函数作为 repl 时,replace() 方法将以下参数传递给该函数:

  • 字符串的匹配部分。
  • 任何捕获到的括号组匹配项都将作为下一组参数提供。按这种方式传递的参数数目因括号匹配项的数目而异。您可以通过检查函数代码中的 arguments.length - 3 来确定括号匹配项的数目。
  • 字符串中匹配开始的索引位置。
  • 完整的字符串。

例如,请看以下例子:

 var str1:String = "abc12 def34";
 var pattern:RegExp = /([a-z]+)([0-9]+)/;
 var str2:String = str1.replace(pattern, replFN);
 trace (str2);   // 12abc 34def
 
 function replFN():String {
  return arguments[2] + arguments[1];
 }

replace() 方法的调用使用一个函数作为 repl 参数。匹配两次正则表达式 (/([a-z]([0-9]/g)。第一次,模式与子字符串 "abc12" 匹配,并将以下参数列表传递给该函数:

 {"abc12", "abc", "12", 0, "abc12 def34"}

第二次,模式与子字符串 "def23" 匹配,并将以下参数列表传递给该函数:

 {"def34", "def", "34", 6, "abc123 def34"}

返回
String — 结果字符串。请注意,源字符串保持不变。

另请参见

search()方法 
AS3 function search(pattern:*):int

搜索指定的 pattern 并返回第一个匹配子字符串的索引。如果没有匹配的子字符串,该方法返回 -1

参数

pattern:* — 要匹配的模式,可以为任何类型的对象,但通常是字符串或正则表达式。如果 pattern 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。请注意,如果指定正则表达式,该方法将忽略此正则表达式的全局标志(“g”),并忽略此正则表达式的 lastIndex 属性(并保持其值不变)。如果传递未定义的值(或未传递值),则该方法返回 -1

返回
int — 第一个匹配子字符串的索引,如果没有匹配项,则为 -1。请注意,字符串的索引从零开始;字符串的第一个字符位于索引 0 处,最后一个字符位于 string.length - 1 处。

另请参见

slice()方法 
AS3 function slice(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String

运行时版本: AIR 1.0 Flash Player 9

返回一个字符串,该字符串包括从 startIndex 字符一直到 endIndex 字符(但不包括该字符)之间的所有字符。不修改原始 String 对象。如果未指定 endIndex 参数,此子字符串的结尾就是该字符串的结尾。如果按 startIndex 索引到的字符与按 endIndex 索引到的字符相同或位于后者的右侧,则该方法返回一个空字符串。

参数

startIndex:Number (default = 0) — 片段起始点的从 0 开始的索引。如果 startIndex 是一个负数,则从右到左创建片段,其中 -1 是最后一个字符。
 
endIndex:Number (default = 0x7fffffff) — 一个比片段终点的索引大 1 的整数。由 endIndex 参数索引的字符未包括在已提取的字符串中。如果 endIndex 是一个负数,则终点根据从字符串的结尾向后数确定,其中 -1 表示最后一个字符。默认为允许的最大索引值。如果省略此参数,则使用 String.length

返回
String — 基于指定索引的子字符串。

另请参见

split()方法 
AS3 function split(delimiter:*, limit:Number = 0x7fffffff):Array

运行时版本: AIR 1.0 Flash Player 9

将 String 对象拆分为一个子字符串数组,方法是在所有出现指定 delimiter 参数的位置进行拆分。

如果 delimiter 参数是正则表达式,即使向后跟踪可以找到与该位置匹配的非空子字符串,也仅考虑字符串给定位置处的第一个匹配项。例如:

  var str:String = "ab";
  var results:Array = str.split(/a*?/); // results == ["","b"]
  
  results = str.split(/a*/); // results == ["","b"].)

如果 delimiter 参数是包含分组圆括号的正则表达式,则每次匹配 delimiter 时,会将分组圆括号的结果(包括任何未定义的结果)连接到输出数组中。例如

  var str:String = "Thi5 is a tricky-66 example.";
  var re:RegExp = /(\d+)/;
  var results:Array = str.split(re);
      // results == ["Thi","5"," is a tricky-","66"," example."]

如果指定 limit 参数,返回的数组中具有的元素数将不多于指定数目。

如果 delimiter 是空字符串、空正则表达式或者可以匹配空字符串的正则表达式,则字符串中的每一个字符都将输出为数组中的一个元素。

如果未定义 delimiter 参数,则会将整个字符串放入返回的数组的第一个元素中。

参数

delimiter:* — 指定拆分此字符串的位置的模式。此模式可以是任何类型的对象,但通常为字符串或正则表达式。如果 delimiter 不是正则表达式或字符串,则该方法在执行前会将其转换为字符串。
 
limit:Number (default = 0x7fffffff) — 要放入数组中的最大项数。默认为允许的最大值。

返回
Array — 一个子字符串的数组。

另请参见

substr()方法 
AS3 function substr(startIndex:Number = 0, len:Number = 0x7fffffff):String

运行时版本: AIR 1.0 Flash Player 9

返回一个子字符串,该子字符串中的字符是通过从指定的 startIndex 开始,按照 len 指定的长度截取所得的。原始字符串保持不变。

参数

startIndex:Number (default = 0) — 一个整数,指定用于创建子字符串的第一个字符的索引。如果 startIndex 是一个负数,则起始索引从字符串的结尾开始确定,其中 -1 表示最后一个字符。
 
len:Number (default = 0x7fffffff) — 要创建的子字符串中的字符数。默认值为所允许的最大值。如果未指定 len,则子字符串包括从 startIndex 到字符串结尾的所有字符。

返回
String — 基于指定参数的子字符串。

另请参见

substring()方法 
AS3 function substring(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String

运行时版本: AIR 1.0 Flash Player 9

返回一个字符串,其中包含由 startIndex 指定的字符和一直到 endIndex - 1 的所有字符。如果未指定 endIndex,则使用 String.length。如果 startIndex 的值等于 endIndex 的值,则该方法返回一个空字符串。如果 startIndex 的值大于 endIndex 的值,则在执行函数之前会自动交换参数。原始字符串保持不变。

参数

startIndex:Number (default = 0) — 一个整数,指定用于创建子字符串的第一个字符的索引。startIndex 的有效值范围为从 0String.length。如果 startIndex 是一个负值,则使用 0
 
endIndex:Number (default = 0x7fffffff) — 一个整数,它比所提取的子字符串中的最后一个字符的索引大 1。endIndex 的有效值范围为从 0String.lengthendIndex 处的字符不包括在子字符串中。默认为允许的最大索引值。如果省略此参数,则使用 String.length。如果此参数是一个负值,则使用 0

返回
String — 基于指定参数的子字符串。

另请参见

toLocaleLowerCase()方法 
AS3 function toLocaleLowerCase():String

返回此字符串的一个副本,其中所有大写的字符均转换为小写字符。原始字符串保持不变。虽然此方法旨在以特定于区域设置的方式处理转换,但 ActionScript 3.0 实现生成的结果与 toLowerCase() 方法生成的结果相同。

返回
String — 该字符串的一个副本,其中所有大写的字符均转换为小写字符。

另请参见

toLocaleUpperCase()方法 
AS3 function toLocaleUpperCase():String

运行时版本: AIR 1.0 Flash Player 9

返回此字符串的一个副本,其中所有小写的字符均转换为大写字符。原始字符串保持不变。虽然此方法旨在以特定于区域设置的方式处理转换,但 ActionScript 3.0 实现生成的结果与 toUpperCase() 方法生成的结果相同。

返回
String — 该字符串的一个副本,其中的所有小写字符均转换为大写字符。

另请参见

toLowerCase()方法 
AS3 function toLowerCase():String

运行时版本: AIR 1.0 Flash Player 9

返回此字符串的一个副本,其中所有大写的字符均转换为小写字符。原始字符串保持不变。

此方法转换所有存在 Unicode 小写等效项的字符(不仅仅是 A-Z):

  var str:String = " JOSÉ BARÇA";
  trace(str.toLowerCase()); // josé barça

这些大小写映射在 UnicodeData.txt 文件和 SpecialCasings.txt 文件中定义,如 Unicode Character Database(Unicode 字符数据库)规范中所定义。

返回
String — 该字符串的一个副本,其中所有大写的字符均转换为小写字符。

另请参见

toUpperCase()方法 
AS3 function toUpperCase():String

运行时版本: AIR 1.0 Flash Player 9

返回此字符串的一个副本,其中所有小写的字符均转换为大写字符。原始字符串保持不变。

此方法转换所有存在 Unicode 大写等效项的字符(不仅仅是 a-z):

  var str:String = "José Barça";
  trace(str.toUpperCase()); // JOSÉ BARÇA

这些大小写映射在 UnicodeData.txt 文件和 SpecialCasings.txt 文件中定义,如 Unicode Character Database(Unicode 字符数据库)规范中所定义。

返回
String — 该字符串的一个副本,其中的所有小写字符均转换为大写字符。

另请参见

valueOf()方法 
AS3 function valueOf():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回 String 实例的原始值。此方法旨在将 String 对象转换为原始字符串值。因为 Flash Player 会在需要时自动调用 valueOf(),所以几乎不需要显式调用此方法。

返回
String — 字符串的值。
示例 如何使用示例
StringExample.as

下面的示例使用 StringExample 和 StringHelper 类说明如何使用 String 类的各种方法。这是使用以下步骤完成的:
  1. StringExample 的构造函数声明多个局部 String 实例,这些实例可使用不同字符串和一个新的 StringHelper 对象初始化。
  2. StringHelper 类具有下列方法:
    • replace():调用 String 的 split()join() 方法,以删除用新字符串传入的字符串的一个子字符串。
    • trim():使用传入的字符串调用 trimBack()trimFront(),并返回更新后的字符串。
    • trimFront():以递归方式删除所有与 char 参数匹配的字符,从字符串的开头开始向后删除,直到字符串中第一个字符与 char 不匹配为止,并返回更新后的字符串。
    • trimBack():以递归方式删除所有与 char 参数匹配的字符,从字符串的末尾开始向前删除,直到字符串中最后一个字符与 char 不匹配为止,并返回更新后的字符串。
    • stringToCharacter():返回传入字符串的第一个字符。
  3. 然后,使用声明的字符串变量生成了 3 个字符串,其中调用 replace() 方法生成第二个字符串,调用 trim() 生成第 3 个字符串。
package {
    import flash.display.Sprite;

    public class StringExample extends Sprite {
        public function StringExample() {
            var companyStr:String = new String("     Company X");
            var productStr:String = "Product Z Basic     ";
            var emptyStr:String = " ";
            var strHelper:StringHelper = new StringHelper();

            var companyProductStr:String = companyStr + emptyStr + productStr;
            trace("'" + companyProductStr + "'");    // '     Company X Product Z Basic     '

            companyProductStr = strHelper.replace(companyProductStr, "Basic", "Professional");
            trace("'" + companyProductStr + "'");    // '     Company X Product Z Professional     '

            companyProductStr = strHelper.trim(companyProductStr, emptyStr);
            trace("'" + companyProductStr + "'");    // 'Company X Product Z Professional'
        }
    }
}

class StringHelper {
    public function StringHelper() {
    }

    public function replace(str:String, oldSubStr:String, newSubStr:String):String {
        return str.split(oldSubStr).join(newSubStr);
    }

    public function trim(str:String, char:String):String {
        return trimBack(trimFront(str, char), char);
    }

    public function trimFront(str:String, char:String):String {
        char = stringToCharacter(char);
        if (str.charAt(0) == char) {
            str = trimFront(str.substring(1), char);
        }
        return str;
    }

    public function trimBack(str:String, char:String):String {
        char = stringToCharacter(char);
        if (str.charAt(str.length - 1) == char) {
            str = trimBack(str.substring(0, str.length - 1), char);
        }
        return str;
    }

    public function stringToCharacter(str:String):String {
        if (str.length == 1) {
            return str;
        }
        return str.slice(0, 1);
    }
}