EN
C#/.NET - parse number algorithm (atoi)
9
points
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