/* * Created by Ranorex * User: rodriqu_dd * Date: 09/10/2021 * Time: 17:37 * * To change this template use Tools > Options > Coding > Edit standard headers. */ using System; using System.Globalization; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using System.Drawing; using System.Threading; using WinForms = System.Windows.Forms; using Ranorex; using Ranorex.Core; using Ranorex.Core.Testing; namespace Ranorex_Automation_Helpers.UserCodeCollections { /// /// Creates a Ranorex user code collection. A collection is used to publish user code methods to the user code library. /// [UserCodeCollection] public static class StringHelpers { // You can use the "Insert New User Code Method" functionality from the context menu, // to add a new method with the attribute [UserCodeMethod]. /// /// The method ToInvariantCulture transforms the format of all numbers /// in the string from the CurrentCulture to InvariantCulture. /// Currently this transformation comprises decimal separator and group separator. /// [UserCodeMethod] public static string ToInvariantCulture(this string originalString) { return originalString.ToNewCulture(CultureInfo.CurrentCulture, CultureInfo.InvariantCulture); } /// /// The method ToCurrentCulture transforms the format of all numbers /// in the string from the InvariantCulture to CurrentCulture. /// Currently this transformation comprises decimal separator and group separator. /// [UserCodeMethod] public static string ToCurrentCulture(this string originalString) { return originalString.ToNewCulture(CultureInfo.InvariantCulture, CultureInfo.CurrentCulture); } [UserCodeMethod] public static string ToCurrentCultureDecimalSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); } [UserCodeMethod] public static string ToCurrentCultureGroupSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator, CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator); } [UserCodeMethod] public static string ToInvariantCultureDecimalSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator); } [UserCodeMethod] public static string ToInvariantCultureGroupSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator, CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator); } [UserCodeMethod] public static string ToNoGroupSeparator(this string originalString) { string stringToRemove = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator; bool mustBeRun = Regex.IsMatch(originalString, @"(\d+)\" + stringToRemove + @"(\d+)"); while (mustBeRun) { originalString = Regex.Replace(originalString, @"(\d+)\" + stringToRemove + @"(\d+)", "$1$2"); mustBeRun = Regex.IsMatch(originalString, @"(\d+)\" + stringToRemove + @"(\d+)"); } return originalString; } private static string ToNewCulture(this string originalString, CultureInfo currentCulture, CultureInfo newCulture) { return originalString. ReplaceNumberSeparator(currentCulture.NumberFormat.NumberGroupSeparator, newCulture.NumberFormat.NumberGroupSeparator). ReplaceNumberSeparator(currentCulture.NumberFormat.NumberDecimalSeparator, newCulture.NumberFormat.NumberDecimalSeparator); } private static string ReplaceNumberSeparator(this string originalString, string currentSeparator, string newSeparator) { return Regex.Replace(originalString, @"(\d+)\" + currentSeparator + @"(\d+)", "$1" + newSeparator + "$2"); } } }