// Copyright (c) Pixel Crushers. All rights reserved. namespace PixelCrushers { /// /// Conversion methods that return default values instead of throwing exceptions. /// public static class SafeConvert { /// /// Converts a string to an int. /// /// Source string. /// int value, or 0 on conversion failure. public static int ToInt(string s) { int result; return int.TryParse(s, out result) ? result : 0; } /// /// Converts a string to a float. /// /// Source string. /// float value, or 0 on conversion failure. public static float ToFloat(string s) { float result; return float.TryParse(s, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out result) ? result : 0; } private const string CommaTag = "%COMMA%"; private const string DoubleQuoteTag = "%QUOTE%"; private const string NewlineTag = "%NEWLINE%"; /// /// Sanitizes a string so it can be serialized to string-based serialization systems. /// /// Source string. /// Sanitized version. public static string ToSerializedElement(string s) { if (s.Contains(",") || s.Contains("\"") || s.Contains("\n")) { return s.Replace(",", CommaTag).Replace("\"", DoubleQuoteTag).Replace("\n", NewlineTag); } else { return s; } } /// /// Desanitizes a string that was previously sanitized for use in string-based serialization systems. /// /// Sanitized version. /// Original source string. public static string FromSerializedElement(string s) { if (s.Contains(CommaTag) || s.Contains(DoubleQuoteTag) || s.Contains(NewlineTag)) { return s.Replace(CommaTag, ",").Replace(DoubleQuoteTag, "\"").Replace(NewlineTag, "\n"); } else { return s; } } } }