/* * 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); } /// /// The method ToCurrentCultureDecimalSeparator transforms the format of decimal separator for all numbers /// in the string from InvariantCulture to CurrentCulture. /// [UserCodeMethod] public static string ToCurrentCultureDecimalSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); } /// /// The method ToCurrentCultureGroupSeparator transforms the format of group separator for all numbers /// in the string from InvariantCulture to CurrentCulture. /// [UserCodeMethod] public static string ToCurrentCultureGroupSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator, CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator); } /// /// The method ToInvariantCultureDecimalSeparator transforms the format of decimal separator for all numbers /// in the string from CurrentCulture to InvariantCulture. /// [UserCodeMethod] public static string ToInvariantCultureDecimalSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator); } /// /// The method ToCurrentCultureGroupSeparator transforms the format of group separator for all numbers /// in the string from CurrentCulture to InvariantCulture. /// [UserCodeMethod] public static string ToInvariantCultureGroupSeparator(this string originalString) { return originalString.ReplaceNumberSeparator(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator, CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator); } /// /// The method ToNoGroupSeparator removes the group separator for all numbers /// in the string from CurrentCulture. /// [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; } public static string ReplacePathAliases(this string path) { var replacementsPath = new Dictionary { // Aliases in Project Explorer for FM's {"@STPH", "Piping"}, {"@GEKB", "Grasbekleding erosie kruin en binnentalud"}, {"@STBI", "Macrostabiliteit binnenwaarts"}, {"@STMI", "Microstabiliteit"}, {"@ZST", "Stabiliteit steenzetting"}, {"@AGK", "Golfklappen op asfaltbekleding"}, {"@AWO", "Wateroverdruk bij asfaltbekleding"}, {"@GEBU", "Grasbekleding erosie buitentalud"}, {"@GABU", "Grasbekleding afschuiven buitentalud"}, {"@GABI", "Grasbekleding afschuiven binnentalud"}, {"@HTKW", "Hoogte kunstwerk"}, {"@BSKW", "Betrouwbaarheid sluiting kunstwerk"}, {"@PKW", "Piping bij kunstwerk"}, {"@STKWp", "Sterkte en stabiliteit puntconstructies"}, {"@DA", "Duinafslag"}, {"@STBU", "Macrostabiliteit buitenwaarts"}, {"@STKWl", "Sterkte en stabiliteit langsconstructies"}, {"@INN", "Technische innovaties"}, // Aliases in Project Explorer for other items {"@HD", "Hydraulische databases"}, {"@HB", "Hydraulische belastingen"}, {"@GF", "Generieke faalmechanismen"}, {"@SF", "Specifieke faalmechanismen"}, // Aliases in Buttons of Ribbon {"@TR", "Traject"}, {"@HyB", "Hydraulische"}, {"@SB", "Sterkte"}, {"@RA", "Registratie"} }; foreach (var item in replacementsPath) { path = path.Replace(item.Key, item.Value); } return path; } 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"); } } }