3

文字列を安全に解析できるかどうかを示すブール変数を返すには、何を使用できますか?

1847 は true を返します 18o2 は false を返します

そして、あまり複雑なことはありません...

4

5 に答える 5

2

int.TryParseを使用できます

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

ここで、正常に解析された場合は成功が true になり、それ以外の場合は false になり、結果には parse 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

私はこれらの拡張メソッドを何年も使用してきました。最初はもう少し「複雑」かもしれませんが、使い方はとても簡単です。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.
于 2013-01-20T15:05:16.533 に答える
1

TryParseメソッドを見てください。

于 2013-01-20T14:51:59.003 に答える