Languages
[Edit]
EN

C#/.NET - parse number algorithm (atoi)

9 points
Created by:
Kate_C
19800

1. Unsigned number example

class Parser
{
	public static int parseInt(string text)
	{
		if (text.Length > 0)
		{
			int value = 0;
			int total = 1;

			for (int i = text.Length - 1; i > -1; i -= 1)
			{
				char entry = text[i];

				if (entry < '0' || entry > '9')
					throw new FormatException("Incorrect number format.");

				value += (entry - '0') * total;
				total *= 10;
			}

			return value;
		}
		else
			throw new FormatException("Incorrect number format.");
	}
}

Example:

string text = "123";
int value = Parser.parseInt(text);
Console.WriteLine(value);

Output:

123

2. Signed number example

class Parser
{
	public static int parseInt(string text)
	{
		if (text.Length > 0)
		{
			int value = 0;
			int total = 1;

			Action<char> action = (entry) =>
			{
				if (entry < '0' || entry > '9')
					throw new FormatException("Incorrect number format.");

				value += (entry - '0') * total;
			};

			for (int i = text.Length - 1; i > 0; i -= 1)
			{
				action.Invoke(text[i]);

				total *= 10;
			}

			{
				char entry = text[0];

				switch (entry)
				{
					case '+':
						return +value;

					case '-':
						return -value;

					default:
						action.Invoke(entry);
						
						return value;
				}
			}
		}
		else
			throw new FormatException("Incorrect number format.");
	}
}

Example:

string text = "123";
int value = Parser.parseInt(text);
Console.WriteLine(value);

Output:

123
Native Advertising
50 000 ad impressions - 449$
🚀
Get your tech brand or product in front of software developers.
For more information contact us:
Red dot
Dirask - friendly IT community for everyone.

❤️💻 🙂

Join