如何询问是否可以将字符串变量解析为int变量

本文关键字:变量 int 字符串 何询问 是否 | 更新日期: 2023-09-27 17:54:31

我可以使用什么,将返回一个布尔变量,将状态,如果我可以安全地解析字符串或不?

1847将返回true18o2将返回false

请不要太复杂…

如何询问是否可以将字符串变量解析为int变量

可以使用int。TryParse

int result = 0;
bool success = int.TryParse("123", out result);

如果解析成功,success为true,否则为false, result为parse int value

使用int.TryParse:

int i;
bool canBeParsed = int.TryParse("1847", out i);
if(canBeParsed)
{
    Console.Write("Number is: " + i);
}
var str = "18o2"
int num = 0;
bool canBeParsed = Int32.TryParse(str, out num);

您应该看看TryParse方法

我已经使用这些扩展方法很多年了。一开始可能会更"复杂"一点,但它们的使用非常简单。您可以使用类似的模式扩展大多数简单的值类型,包括Int16Int64BooleanDateTime等。

using System;
namespace MyLibrary
{
    public static class StringExtensions
    {
        public static Int32? AsInt32(this string s)
        {
            Int32 result;       
            return Int32.TryParse(s, out result) ? result : (Int32?)null;
        }
        public static bool IsInt32(this string s)
        {
            return s.AsInt32().HasValue;
        }
        public static Int32 ToInt32(this string s)
        {
            return Int32.Parse(s);
        }
    }
}

要使用这些,只需将MyLibrary包含在具有using声明的名称空间列表中。

"1847".IsInt32(); // true
"18o2".IsInt32(); // false
var a = "1847".AsInt32();
a.HasValue; //true
var b = "18o2".AsInt32();
b.HasValue; // false;
"18o2".ToInt32(); // with throw an exception since it can't be parsed.