public static string ToStringLiteral(string s, EcmaScriptStringLiteralCharacters characters) { if (characters == EcmaScriptStringLiteralCharacters.SingleString) { return('\'' + ToSingleStringCharacters(s) + '\''); } if (characters == EcmaScriptStringLiteralCharacters.DoubleString) { return('"' + ToDoubleStringCharacters(s) + '"'); } throw new ArgumentException(); }
private static string ToStringCharacters(string s, EcmaScriptStringLiteralCharacters stringLiteralStringCharacters) { char[] forbiddenCharacters = (((char)stringLiteralStringCharacters) + "\\\r\u2028\u2029\n").ToCharArray(); var sb = new StringBuilder(); foreach (var c in s) { if (c == (char)stringLiteralStringCharacters) { sb.Append("\\" + (char)stringLiteralStringCharacters); } else if (c == '\u000A') { sb.Append(@"\n"); } else if (c == '\u000D') { sb.Append(@"\r"); } else if (c == '\\') { sb.Append(@"\\"); } else if (forbiddenCharacters.Contains(c)) { sb.Append(@"\u" + ((short)c).ToString("X4")); } else { sb.Append(c); } } return(sb.ToString()); }