❔ Item.Is a Number

Hey, I have this list:
{ "+", "-", "*", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
{ "+", "-", "*", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
I iterate through the list with a foreach. I want to check if the item is a number or not. So is there something like
foreach
if((int)item.Is a number)
.....
foreach
if((int)item.Is a number)
.....
?
11 Replies
EinfachNurBaum
EinfachNurBaumOP2y ago
or something similar, that don't causes a error
Angius
Angius2y ago
$tryparse
MODiX
MODiX2y ago
The TryParse pattern is considered best practice of parsing data from a string: - a TryParse method returns true or false to inform you if it succeeded or not, so you can use it directly in a condition, - since C# 7 you can declare a variable that will be used as an out argument inline in an argument list, - it forces you to check if the out argument contains valid data afterwards, Avoid: Convert.ToInt32 — it's a bad choice for parsing an int. It exists only for backwards compatibility reasons and should be considered last resort.
return Convert.ToInt32(null); //returns 0. null should not be considered as 0 ever
return Convert.ToInt32("asdf"); //throws FormatException
return Convert.ToInt32(null); //returns 0. null should not be considered as 0 ever
return Convert.ToInt32("asdf"); //throws FormatException
(Note: Convert does contain useful conversion methods: To/FromBase64String, To/FromHexString, ToString(X value, int toBase), ToX(string? value, int fromBase)) Avoid: int.Parse — you have to use a try/catch statement to handle invalid input, which is a less clean solution.
var number = int.Parse("abc"); //throws FormatException
var number = int.Parse(""); //throws FormatException
var number = int.Parse("abc"); //throws FormatException
var number = int.Parse(""); //throws FormatException
Use int.TryParse https://docs.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=net-5.0#System_Int32_TryParse_System_String_System_Int32__
if (int.TryParse(someInput, out var result))
{
Console.WriteLine($"Thanks for giving me the following number: {result}!");
}
else
{
Console.WriteLine("You didn't give me a valid number :c");
}
if (int.TryParse(someInput, out var result))
{
Console.WriteLine($"Thanks for giving me the following number: {result}!");
}
else
{
Console.WriteLine("You didn't give me a valid number :c");
}
Int32.TryParse Method (System)
Converts the string representation of a number to its 32-bit signed integer equivalent. A return value indicates whether the operation succeeded.
Angius
Angius2y ago
Or char.IsNumber() IIRC
.logik.
.logik.2y ago
Maybe you're looking for the Char.IsDigit static method?
Angius
Angius2y ago
Ah, yeah, this one, not .IsNumber()
EinfachNurBaum
EinfachNurBaumOP2y ago
Thanks $close
ero
ero2y ago
yeah but they're not chars right
Angius
Angius2y ago
Just [0] them then Or use int.TryParse()
EinfachNurBaum
EinfachNurBaumOP2y ago
I have never used chars and int.tryParse() is the thing that matchs better
Accord
Accord2y ago
Was this issue resolved? If so, run /close - otherwise I will mark this as stale and this post will be archived until there is new activity.
Want results from more Discord servers?
Add your server