Recipe 9.12 Trimming Whitespace

9.12.1 Problem

You want to trim the whitespace from the beginning and end of a string.

9.12.2 Solution

Write a custom trim( ) method that splits the string into an array of characters, removes the whitespace from the beginning and end, and then returns the character array as a string using join( ).

9.12.3 Discussion

Extra whitespace at the beginning and end of a string is a common enough annoyance that you should have a way of dealing with it. ActionScript does not provide a native trim( ) method, so you have to write your own.

The custom trim( ) method presented here:

  1. Splits the string into an array or characters

  2. Removes whitespace elements at the beginning of the array until it finds an element that is not a whitespace character (tab, form feed, carriage return, newline, or space)

  3. Removes whitespace elements at the end of the array

  4. Uses join( ) to form the array characters into a single string and returns that value

Here is our custom String.trim( ) function. You can add it to a String.as file for easy inclusion in other projects.

String.prototype.trim = function (  ) {   // Split the string into an array of characters.   var chars = this.split("");   // Remove any whitespace elements from the beginning of the array using splice(  ).   // Use a break statement to exit the loop when you reach a non-whitespace character   // to prevent it from removing whitespace in the middle of the string.   for (var i = 0; i < chars.length; i++) {     if (chars[i] == "\r" ||         chars[i] == "\n" ||         chars[i] == "\f" ||         chars[i] == "\t" ||         chars[i] == " ") {       chars.splice(i, 1);       i--;     } else {       break;     }   }   // Loop backward through the array, removing whitespace elements until a    // non-whitespace character is encountered. Then break out of the loop.   for (var i = chars.length - 1; i >= 0; i--) {     if (chars[i] == "\r" ||         chars[i] == "\n" ||         chars[i] == "\f" ||         chars[i] == "\t" ||         chars[i] == " ") {       chars.splice(i, 1);     } else {       break;     }   }   // Recreate the string with the join(  ) method and return the result.   return chars.join(""); }; // Create a string with beginning and ending whitespace. myString = "\n\r\f\ta string\t\t\n\n"; /* Display the value before calling the trim(  ) method. Displays: this string value is:          a string                 <end> */ trace("this string value is: " + myString + "<end>"); // Set myString to the value returned by the trim(  ) method. myString = myString.trim(  ); /* Now, display the value again using the same trace(  ) statement. Displays: this string value is: a string<end> */ trace("this string value is: " + myString + "<end>");

For good measure, here is a trim function implemented using the RegExp class:

// You must include the third-party RegExp.as file from Recipe 9.6. #include "RegExp.as" var trimRe = new RegExp("^\\s*|\\s*$"); var myString = "\r\n\f\t test string \r\n\f\t"; trace(myString.replace(trimRe, ""));  // Displays: test string


ActionScript Cookbook
ActionScript 3.0 Cookbook: Solutions for Flash Platform and Flex Application Developers
ISBN: 0596526954
EAN: 2147483647
Year: 2005
Pages: 425

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net