using System.Text.RegularExpressions;
public static void Main()
Console.WriteLine(Validar("7,123.45"));
Console.WriteLine(Validar("7.123,45"));
Console.WriteLine(Validar("7,123,456"));
Console.WriteLine(Validar("7.123.456"));
Console.WriteLine(Validar("123.456"));
Console.WriteLine(Validar("123,456"));
Console.WriteLine("------------VIEJOS----------------");
Console.WriteLine(Validar("1300.01"));
Console.WriteLine(Validar("123,"));
Console.WriteLine(Validar("123."));
Console.WriteLine(Validar("123,4"));
Console.WriteLine(Validar("123.4"));
Console.WriteLine(Validar("123.45"));
Console.WriteLine(Validar("123,45"));
Console.WriteLine(Validar("1.234.56"));
Console.WriteLine(Validar("1,234,56"));
Console.WriteLine(Validar("1,234.56"));
Console.WriteLine(Validar("1.234,56"));
Console.WriteLine(Validar("1,234.5"));
Console.WriteLine(Validar("1.234,5"));
Console.WriteLine(Validar("1,234"));
public static string Validar(string input) {
var regex = @"^[+-]?[0-9]{1,}(?:[0-9]*(?:[.,][0-9]{1})?|(?:,[0-9]{3})*(?:\.[0-9]{1,2})?|(?:\.[0-9]{3})*(?:,[0-9]{1,2})?)$";
var match = Regex.Match(input, regex, RegexOptions.IgnoreCase);
return "ERROR " + input + " - EN DECIMAL " + ConvertDecimalToInt(input);
return "OK " + input + " - EN DECIMAL " + ConvertDecimalToInt(input);
private static string ConvertDecimalToInt(string strDecimal)
strDecimal = strDecimal.Replace(".", ",");
if (strDecimal.Contains(","))
int decimalSeparator = strDecimal.LastIndexOf(",");
int count = strDecimal.Split(',').Length - 1;
string integerPart = strDecimal.Substring(0,decimalSeparator);
string decimalPart = strDecimal.Substring(decimalSeparator,strDecimal.Length - decimalSeparator);
integerPart = integerPart.Replace(",","");
decimalPart = decimalPart.Replace(",","");
Console.WriteLine("CASO DE MILES");
int cantidadDeDecimales = strDecimal.Length - decimalSeparator - 1;
switch (cantidadDeDecimales) {
finalNumber = integerPart + "00";
finalNumber = integerPart + decimalPart + "0";
finalNumber = integerPart + decimalPart;
finalNumber = integerPart + decimalPart + "00";
int cantidadDeDecimales = strDecimal.Length - decimalSeparator - 1;
switch (cantidadDeDecimales) {
finalNumber = integerPart + "00";
finalNumber = integerPart + decimalPart + "0";
finalNumber = integerPart + decimalPart;
finalNumber = integerPart + decimalPart + "00";
if (decimalPart.Length == 1) {
return(integerPart + decimalPart + "0");
return integerPart + decimalPart;
return(strDecimal + "00");