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