Recipe 12.2. Using Quotes and Apostrophes in Strings


Problem

You want to use quotes or apostrophes within a string value.

Solution

Use a backslash to escape the quotes or apostrophes contained within the string. Alternatively, use single quotes within double quotes, or vice versa.

Discussion

The ActionScript compiler tries to match u p quotes of the same kind (single quotes with single quotes and double quotes with double quotes) when processing string literals. Therefore, if you enclose a string literal within quotes of one type and also try to include the same kinds of quotes in the string value, the code fails to compile as you intended.

This string assignment causes an error because of mismatched quotes. In the following example, the string starts with a double quote ("Yes), therefore, the double quote character before the Y signals the end of the string to the compiler. As such, it does not understand what to do with the remaining characters:

var error:String = "He said, "Yes."";  // Incorrect.

One possible solution is to use single quotes to enclose a string literal that contains double quotes, or double quotes to enclose a string literal that contains single quotes, as follows:

// This assignment works. The result is a string: He said, "Yes." var exampleA:String = 'He said, "Yes."'; // This assignment also works. The result is a string: He said, 'Yes.' var exampleB:String = "He said, 'Yes.'";

However, if the string value contains both single and double quotes, this technique does not work. Furthermore, you have to pay close attention to what type of quotes are used when creating the strings, and you lose consistency in your program with constant quote switching. An alternative solution, which works all the time, is to use the backslash character (\\) to escape any quotes used within the string value (i.e., escape the quote by preceding it by a backslash):

// This assignment works. The result is a string: He said, "Yes." var sExample:String = "He said, \"Yes.\"";

The backslash tells the compiler to interpret the next character literally, and not with any special meaning it might normally have. Therefore, when you precede a quotation mark within a string value with the backslash character, you tell the compiler that the quote does not signal the boundary of the string value, but rather it is to be interpreted as just another character in the string.




ActionScript 3. 0 Cookbook
ActionScript 3.0 Cookbook: Solutions for Flash Platform and Flex Application Developers
ISBN: 0596526954
EAN: 2147483647
Year: 2007
Pages: 351

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