| 
          
           
 
 
          
          
           
            Substrings
are sequential characters within a string. For example, the string
            
             "abc"
            
            has
the following substrings:
            
             ""
            
            ,
            
             "a"
            
            ,
            
             "ab"
            
            ,
            
             "abc"
            
            ,
            
             "b"
            
            ,
            
             "bc"
            
            ,
            
             "c"
            
            . You
can use ActionScript methods to locate substrings of a string.
            
           
            Patterns are defined in ActionScript by strings or by regular
expressions. For example, the following regular expression defines
a specific pattern—the letters A, B, and C followed by a digit character
(the forward slashes are regular expression delimiters):
            
           /ABC\d/ 
           
            ActionScript includes methods for finding patterns in strings
and for replacing found matches with replacement substrings. These
methods are described in the following sections.
            
           
            Regular expressions can define intricate patterns. For more information,
see
            
             Using regular expressions
            
            .
            
           
          
           
            
           
           
            Finding a substring by character position
           
           
            
             The
             
              substr()
             
             and
             
              substring()
             
             methods
are similar. Both return a substring of a string. Both take two
parameters. In both methods, the first parameter is the position
of the starting character in the given string. However, in the
             
              substr()
             
             method,
the second parameter is the
             
              length
             
             of the substring to return,
and in the
             
              substring()
             
             method, the second parameter
is the position of the character at the
             
              end
             
             of the substring
(which is not included in the returned string). This example shows
the difference between these two methods:
             
            var str:String = "Hello from Paris, Texas!!!"; 
trace(str.substr(11,15)); // output: Paris, Texas!!! 
trace(str.substring(11,15)); // output: Pari 
            
             The
             
              slice()
             
             method functions similarly to the
             
              substring()
             
             method.
When given two non-negative integers as parameters, it works exactly
the same. However, the
             
              slice()
             
             method can take
negative integers as parameters, in which case the character position
is taken from the end of the string, as shown in the following example:
             
            var str:String = "Hello from Paris, Texas!!!"; 
trace(str.slice(11,15)); // output: Pari 
trace(str.slice(-3,-1)); // output: !! 
trace(str.slice(-3,26)); // output: !!! 
trace(str.slice(-3,str.length)); // output: !!! 
trace(str.slice(-8,-3)); // output: Texas 
            
             You can combine non-negative and negative integers as the parameters
of the
             
              slice()
             
             method.
             
            
           
          
           
            
           
           
            Finding the character position of a matching substring
           
           
            
             You can use the
             
              indexOf()
             
             and
             
              lastIndexOf()
             
             methods
to locate matching substrings within a string, as the following
example shows:
             
            var str:String = "The moon, the stars, the sea, the land"; 
trace(str.indexOf("the")); // output: 10
            
             Notice that the
             
              indexOf()
             
             method is case-sensitive.
             
            
             You can specify a second parameter to indicate the index position
in the string from which to start the search, as follows:
             
            var str:String = "The moon, the stars, the sea, the land" 
trace(str.indexOf("the", 11)); // output: 21
            
             The
             
              lastIndexOf()
             
             method finds the last occurrence
of a substring in the string:
             
            var str:String = "The moon, the stars, the sea, the land" 
trace(str.lastIndexOf("the")); // output: 30
            
             If you include a second parameter with the
             
              lastIndexOf()
             
             method,
the search is conducted from that index position in the string working
backward (from right to left):
             
            var str:String = "The moon, the stars, the sea, the land" 
trace(str.lastIndexOf("the", 29)); // output: 21
            
           
          
           
            
           
           
            Creating an array of substrings segmented by a delimiter
           
           
            
             You can use the
             
              split()
             
             method
to create an array of substrings, which is divided based on a delimiter.
For example, you can segment a comma-delimited or tab-delimited
string into multiple strings.
             
            
             The following example shows how to split an array into substrings
with the ampersand (&) character as the delimiter:
             
            var queryStr:String = "first=joe&last=cheng&title=manager&StartDate=3/6/65"; 
var params:Array = queryStr.split("&", 2); // params == ["first=joe","last=cheng"]
            
             The second parameter of the
             
              split()
             
             method,
which is optional, defines the maximum size of the array that is
returned.
             
            
             You can also use a regular expression as the delimiter character:
             
            var str:String = "Give me\t5." 
var a:Array = str.split(/\s+/); // a == ["Give","me","5."] 
            
             For more information, see
             
              Using regular expressions
             
             and the
             
              ActionScript 3.0 Reference for the Adobe
Flash Platform
             
             .
             
            
           
          
           
            
           
           
            Finding patterns in strings and replacing substrings
           
           
            
             The
String class includes the following methods for working with patterns
in strings:
             
            
            
             These methods are described in the following sections.
             
            
             You can use strings or regular expressions to define patterns
used in these methods. For more information on regular expressions,
see
             
              Using regular expressions
             
             .
             
            
            
             
              
             
             
              Finding matching substrings
             
             
              The
              
               search()
              
              method returns
the index position of the first substring that matches a given pattern,
as shown in this example:
              
             var str:String = "The more the merrier."; 
// (This search is case-sensitive.) 
trace(str.search("the")); // output: 9 
             
              You can also
use regular expressions to define the pattern to match, as this example
shows:
              
             var pattern:RegExp = /the/i; 
var str:String = "The more the merrier."; 
trace(str.search(pattern)); // 0 
             
              The output of the
              
               trace()
              
              method
is 0, because the first character in the string is index position
0. The
              
               i
              
              flag is set in the regular expression,
so the search is not case-sensitive.
              
             
              The
              
               search()
              
              method
finds only one match and returns its starting index position, even
if the
              
               g
              
              (global) flag is set in the regular expression.
              
             
              The
following example shows a more intricate regular expression, one
that matches a string in double quotation marks:
              
             var pattern:RegExp = /"[^"]*"/; 
var str:String = "The \"more\" the merrier."; 
trace(str.search(pattern)); // output: 4 
 
str = "The \"more the merrier."; 
trace(str.search(pattern)); // output: -1  
// (Indicates no match, since there is no closing double quotation mark.) 
             
              The
              
               match()
              
              method
works similarly. It searches for a matching substring. However,
when you use the global flag in a regular expression pattern, as
in the following example,
              
               match()
              
              returns an array
of matching substrings:
              
             var str:String = "bob@example.com, omar@example.org"; 
var pattern:RegExp = /\w*@\w*\.[org|com]+/g; 
var results:Array = str.match(pattern); 
             
              The
              
               results
              
              array
is set to the following:
              
             ["bob@example.com","omar@example.org"] 
             
              For
more information on regular expressions, see
              
               Using regular expressions
              
              .
              
             
            
             
              
             
             
              Replacing matched substrings
             
             
              You
can use the
              
               replace()
              
              method to search for a specified
pattern in a string and replace matches with the specified replacement
string, as the following example shows:
              
             var str:String = "She sells seashells by the seashore."; 
var pattern:RegExp = /sh/gi; 
trace(str.replace(pattern, "sch")); //sche sells seaschells by the seaschore.  
             
              Note
that in this example, the matched strings are not case-sensitive
because the
              
               i
              
              (
              
               ignoreCase
              
              ) flag
is set in the regular expression, and multiple matches are replaced
because the
              
               g
              
              (
              
               global
              
              ) flag is
set. For more information, see
              
               Using regular expressions
              
              .
              
             
              You can include the following
              
               $
              
              replacement
codes in the replacement string. The replacement text shown
in the following table is inserted in place of the
              
               $
              
              replacement
code:
              
             
              
               
                
                 | 
                   
                   $ Code
                   
                  | 
                 
                   
                   Replacement Text
                   
                  | 
                 
               
               
                
                 | 
                   
                   
                    $$
                   
                   
                  | 
                 
                   
                   $
                   
                  | 
                 
                
                 | 
                   
                   
                    $&
                   
                   
                  | 
                 
                   
                   The matched substring.
                   
                  | 
                 
                
                 | 
                   
                   
                    $`
                   
                   
                  | 
                 
                   
                   The portion of the string that precedes
the matched substring. This code uses the straight left single quotation
mark character (
                   
                    `
                   
                   ), not the straight single quotation
mark (
                   
                    '
                   
                   ) or the left curly single quotation mark
(
                   
                    '
                   
                   ).
                   
                  | 
                 
                
                 | 
                   
                   
                    $'
                   
                   
                  | 
                 
                   
                   The portion of the string that follows the
matched substring. This code uses the straight single quotation
mark (
                   
                    '
                   
                   ).
                   
                  | 
                 
                
                 | 
                   
                   
                    $
                   
                   
                    n
                   
                   
                  | 
                 
                   
                   The
                   
                    n
                   
                   th captured parenthetical group
match, where n is a single digit, 1-9, and $n is not followed by
a decimal digit.
                   
                  | 
                 
                
                 | 
                   
                   
                    $
                   
                   
                    nn
                   
                   
                  | 
                 
                   
                   The
                   
                    nn
                   
                   th captured parenthetical group
match, where
                   
                    nn
                   
                   is a two-digit decimal number, 01–99. If
the
                   
                    nn
                   
                   th capture is undefined, the replacement text is an
empty string.
                   
                  | 
                 
               
               
              
             
              For
example, the following shows the use of the
              
               $2
              
              and
              
               $1
              
              replacement
codes, which represent the first and second capturing group matched:
              
             var str:String = "flip-flop"; 
var pattern:RegExp = /(\w+)-(\w+)/g; 
trace(str.replace(pattern, "$2-$1")); // flop-flip 
             
              You
can also use a function as the second parameter of the
              
               replace()
              
              method. The
matching text is replaced by the returned value of the function.
              
             var str:String = "Now only $9.95!"; 
var price:RegExp = /\$([\d,]+.\d+)+/i; 
trace(str.replace(price, usdToEuro)); 
 
function usdToEuro(matchedSubstring:String,                                  capturedMatch1:String,                                  index:int,                                  str:String):String 
{ 
    var usd:String = capturedMatch1; 
    usd = usd.replace(",", ""); 
    var exchangeRate:Number = 0.853690; 
    var euro:Number = parseFloat(usd) * exchangeRate; 
    const euroSymbol:String = String.fromCharCode(8364); 
    return euro.toFixed(2) + " " + euroSymbol; 
}
             
              When you use a function as the second parameter
of the
              
               replace()
              
              method, the following arguments
are passed to the function:
              
             
              - 
               
                The matching portion of
the string.
                
               
              - 
               
                Any capturing parenthetical group matches. The number of
arguments passed this way will vary depending on the number of parenthetical
matches. You can determine the number of parenthetical matches by
checking
                
                 arguments.length - 3
                
                within the function
code.
                
               
              - 
               
                The index position in the string where the match begins.
                
               
              - 
               
                The complete string.
                
               
              
             
            
           
          
          
           
          
          
          
          | 
         
          | 
         
          
          |