// 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;
}
}
}
}