そのため、StackOverflow で Delphi の StrToIntDef 関数に相当する決定的なものを見つけることを期待していましたが、できません。
以下を実装...
public static int StrToIntDef(string s, int def)
{
}
そのため、StackOverflow で Delphi の StrToIntDef 関数に相当する決定的なものを見つけることを期待していましたが、できません。
以下を実装...
public static int StrToIntDef(string s, int def)
{
}
public static int StrToIntDef(string s, int @default)
{
int number;
if (int.TryParse(s, out number))
return number;
return @default;
}
このメソッドは、初心者が知らない可能性が高いいくつかのより高度な C# 機能を使用しています。それらは次のとおりです。
@
ます。これは、C# キーワードであるため、コンパイル エラーを防ぐためです。number
引数を として渡すとout
、値型であるにもかかわらず、 number が関数内で更新されて返されることを意味します。さまざまなスタイルの数値を解析するために使用できる追加のオーバーロードがあります。
public static bool TryParse(
string s,
NumberStyles style,
IFormatProvider provider,
out int result
)
NumberStyles
通貨や 16 進数などの異常な形式の数値を解析するために、このオーバーロードと組み合わせて使用できるリストを次に示します。
None
AllowLeadingWhite
AllowTrailingWhite
AllowLeadingSign
AllowTrailingSign
AllowParentheses
AllowDecimalPoint
AllowThousands
AllowExponent
AllowCurrencySymbol
AllowHexSpecifier
Integer
HexNumber
Number
Float
Currency
Any
たとえば、16 進数を渡すと、次のようになります。
string hex = "AB";
int hexInt = int.Parse(hex, NumberStyles.HexNumber);
または、括弧と空白を削除します:
string number = " (2) ";
int castedNumber = int.Parse(num, NumberStyles.AllowParentheses |
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite);
詳細については、MSDNを参照してください。
public static int StrToIntDef(string s, int def)
{
int temp;
if (!Int32.TryParse(s, out temp))
return def;
return temp;
}
次を発行できますTryParse
。
int val;
var success = Int.TryParse("1", out val);
または、直接変換することもできます:
int val = Convert.ToInt32("1");
要するに、独自の関数は必要ありません。もちろん、0
変換しない場合以外のデフォルト値を指定する必要がある場合を除きます。その場合は、メソッドを活用TryParse
し、機能しない場合は、渡されたデフォルトを返します。
これを試して。
int outputInteger;
int.TryParse(inputString, out outputInteger);