System.Base2.Parse C# (CSharp) Method

Parse() public static method

public static Parse ( string Value, Base2ParseMode ParseMode, bool Round ) : Base2
Value string
ParseMode Base2ParseMode
Round bool
return Base2
		public static Base2 Parse(string Value, Base2ParseMode ParseMode, bool Round)
		{
			var ret = new Base2();
			var r = new System.Text.RegularExpressions.Regex(@"[A-Za-z]*$");

			if (Value.EndsWith("bit", StringComparison.CurrentCultureIgnoreCase))
			{
				ret.Bits = Convert.ToUInt64(r.Replace(Value, ""));
			}
			if (Value.EndsWith("B", StringComparison.CurrentCultureIgnoreCase))
			{
				try { ret.Bytes = Convert.ToInt64(r.Replace(Value, "")); }
				catch { Value += "B"; }
			}

			if (ParseMode == Base2ParseMode.Binary)
			{
				if (Value.EndsWith("KBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kibibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("KB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kibibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Mebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Mebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Mebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Mebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gibibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gibibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Tebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Tebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Tebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Tebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Pebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Pebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Pebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Pebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
			}

			if (ParseMode == Base2ParseMode.Scientific)
			{
				if (Value.EndsWith("KIBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kibibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("KIB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kibibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MIBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Mebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Mebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MIB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Mebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Mebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GIBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gibibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gibibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GIB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gibibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gibibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TIBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Tebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Tebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TIB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Tebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Tebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PIBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Pebibits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Pebibits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PIB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Pebibytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Pebibytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("KBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kilobits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kilobits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("KB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Kilobytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Kilobytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Megabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Megabits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("MB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Megabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Megabytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gigabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gigabits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("GB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Gigabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Gigabytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Terabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Terabits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("TB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Terabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Terabytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PBIT", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Petabits = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Petabits = Convert.ToDecimal(r.Replace(Value, ""));
				}
				if (Value.EndsWith("PB", StringComparison.CurrentCultureIgnoreCase))
				{
					if (Round)
						ret.Petabytes = Decimal.Round(Convert.ToDecimal(r.Replace(Value, "")));
					else
						ret.Petabytes = Convert.ToDecimal(r.Replace(Value, ""));
				}
			}

			ret.parseMode = ParseMode;
			return ret;
		}