3

我可以使用什么来返回一个布尔变量,该变量将说明我是否可以安全地解析字符串?

1847 将返回真 18o2 将返回假

拜托,不要太复杂...

4

5 回答 5

2

您可以使用int.TryParse

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

如果解析成功,这里的成功将为 true,否则为 false,结果将具有解析 int 值。

于 2013-01-20T14:52:14.230 回答
2

使用int.TryParse

int i;
bool canBeParsed = int.TryParse("1847", out i);
if(canBeParsed)
{
    Console.Write("Number is: " + i);
}
于 2013-01-20T14:52:14.257 回答
2
var str = "18o2"
int num = 0;

bool canBeParsed = Int32.TryParse(str, out num);
于 2013-01-20T14:52:25.863 回答
1

你应该看看TryParse方法

于 2013-01-20T14:51:59.003 回答
1

多年来我一直在使用这些扩展方法。一开始可能有点“复杂”,但它们的使用非常简单。您可以使用类似的模式扩展大多数简单值类型,包括Int16Int64Boolean、等。DateTime

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.
于 2013-01-20T15:05:16.533 回答