{ "type": "class",
  "qname": "mx.utils.StringUtil",
  "baseClassname": ""
  ,
    "description": "The StringUtil utility class is an all-static class with methods for working with String objects within Flex. You do not create instances of StringUtil; instead you call methods such as the <code>StringUtil.substitute()</code> method.",
  "tags": [
  {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "trim",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Removes all whitespace characters from the beginning and end of the specified string.   beginning and end.",
        "tags": [
        {  "tagName": "param",
               "values": ["str The String whose whitespace should be trimmed."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "return",
               "values": ["Updated String where whitespace was removed from the"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "String",
          "params": [{ "name": "str", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "trimArrayElements",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Removes all whitespace characters from the beginning and end of each element in an Array, where the Array is stored as a String.    beginning and end of each element.",
        "tags": [
        {  "tagName": "param",
               "values": ["value The String whose whitespace should be trimmed.", "separator The String that delimits each Array element in the string."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "return",
               "values": ["Updated String where whitespace was removed from the"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "String",
          "params": [{ "name": "value", "type": "String"},
        { "name": "delimiter", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "isWhitespace",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Returns <code>true</code> if the specified string is a single space, tab, carriage return, newline, or formfeed character.   a single space, tab, carriage return, newline, or formfeed character.",
        "tags": [
        {  "tagName": "param",
               "values": ["str The String that is is being queried."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "return",
               "values": ["<code>true</code> if the specified string is"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "character", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "substitute",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Substitutes &quot;{n}&quot; tokens within the specified string with the respective arguments passed in.  Note that this uses String.replace and &quot;$&quot; can have special meaning in the argument strings escape by using &quot;$$&quot;.  This string can contain special tokens of the form <code>{n}</code>, where <code>n</code> is a zero based index, that will be replaced with the additional parameters found at that index if specified.  in the <code>str</code> parameter at each <code>{n}</code> location, where <code>n</code> is an integer (zero based) index value into the array of values specified. If the first parameter is an array this array will be used as a parameter list. This allows reuse of this routine in other methods that want to use the ... rest signature. For example <pre>\\n public function myTracer(str:String, ... rest):void\\n {\\n label.text += StringUtil.substitute(str, rest) + &quot;\\n&quot;;\\n } </pre>  replaced with the respective arguments specified.   var str:String = &quot;here is some info '{0}' and {1}&quot;; trace(StringUtil.substitute(str, 15.4, true));  // this will output the following string: // &quot;here is some info '15.4' and true&quot;",
        "tags": [
        {  "tagName": "param",
               "values": ["str The string to make substitutions in.", "rest Additional parameters that can be substituted"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "return",
               "values": ["New string with all of the <code>{n}</code> tokens"]},
            {  "tagName": "example",
               "values": []},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "String",
          "params": [{ "name": "str", "type": "String"},
        { "name": "rest", "type": "Array"}]}
      ,
      { "type": "method",
        "qname": "repeat",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Returns a string consisting of a specified string concatenated with itself a specified number of times.",
        "tags": [
        {  "tagName": "param",
               "values": ["str The string to be repeated.", "n The repeat count."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.1"]},
            {  "tagName": "return",
               "values": ["The repeated string."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "String",
          "params": [{ "name": "str", "type": "String"},
        { "name": "n", "type": "int"}]}
      ,
      { "type": "method",
        "qname": "restrict",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Removes &quot;unallowed&quot; characters from a string. A &quot;restriction string&quot; such as <code>&quot;A-Z0-9&quot;</code> is used to specify which characters are allowed. This method uses the same logic as the <code>restrict</code> property of TextField.    that are not allowed by the restriction string.",
        "tags": [
        {  "tagName": "param",
               "values": ["str The input string.", "restrict The restriction string."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.1"]},
            {  "tagName": "return",
               "values": ["The input string, minus any characters"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "String",
          "params": [{ "name": "str", "type": "String"},
        { "name": "restrict", "type": "String"}]}
      ]
  }
