You want to trim the whitespace from the beginning and end of a string.
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( ).
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:
Splits the string into an array or characters
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)
Removes whitespace elements at the end of the array
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