using System.Globalization;
namespace Content.Shared.Localizations;
///
/// Helpers for user input parsing.
///
///
/// A wrapper around the API,
/// with the goal of trying more options to make the user input parsing less restrictive.
/// For culture-invariant parsing use .
///
public static class UserInputParser
{
private static readonly NumberFormatInfo[] StandardDecimalNumberFormats = new[]
{
new NumberFormatInfo()
{
NumberDecimalSeparator = "."
},
new NumberFormatInfo()
{
NumberDecimalSeparator = ","
}
};
public static bool TryFloat(ReadOnlySpan text, out float result)
{
foreach (var format in StandardDecimalNumberFormats)
{
if (float.TryParse(text, NumberStyles.Integer | NumberStyles.AllowDecimalPoint, format, out result))
{
return true;
}
}
result = 0f;
return false;
}
public static bool TryDouble(ReadOnlySpan text, out double result)
{
foreach (var format in StandardDecimalNumberFormats)
{
if (double.TryParse(text, NumberStyles.Integer | NumberStyles.AllowDecimalPoint, format, out result))
{
return true;
}
}
result = 0d;
return false;
}
}