Languages
[Edit]
EN

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

9 points
Created by:
Elleanor-Williamson
320

1. Unsigned number example

public 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.");
	}
}

Usage example:

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

Console.WriteLine(value);

Output:

123

2. Signed number example

public 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.");
	}
}

Usage example:

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

Console.WriteLine(value);

Output:

123
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join