Int16.TryParse 方法

定義

將數位的字串表示轉換為其相等的16位帶正負號的整數。 傳回值表示轉換成功或失敗。

多載

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int16)

嘗試將UTF-8字元的範圍剖析為值。

TryParse(ReadOnlySpan<Char>, Int16)

將特定文化特性格式的數位範圍表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

TryParse(String, Int16)

將數位的字串表示轉換為其相等的16位帶正負號的整數。 傳回值表示轉換成功或失敗。

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int16)

嘗試將字元範圍剖析成值。

TryParse(String, IFormatProvider, Int16)

嘗試將字串剖析成值。

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int16)

嘗試將UTF-8字元的範圍剖析為值。

TryParse(ReadOnlySpan<Byte>, Int16)

嘗試將包含數位字串表示的UTF-8字元範圍轉換為其16位帶正負號的整數對等。

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int16)

將指定樣式和特定文化特性格式的數位範圍表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

TryParse(String, NumberStyles, IFormatProvider, Int16)

將指定樣式和特定文化特性格式之數位的字串表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs

嘗試將UTF-8字元的範圍剖析為值。

public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out short result);

參數

utf8Text
ReadOnlySpan<Byte>

要剖析的UTF-8字元範圍。

provider
IFormatProvider

物件,提供與 utf8Text相關的特定文化特性格式資訊。

result
Int16

傳回時,包含成功剖析 utf8Text 或失敗時未定義值的結果。

傳回

如果已成功剖析 utf8Texttrue;否則,false

適用於

.NET 9 和 .NET 8
產品 版本
.NET 8, 9

TryParse(ReadOnlySpan<Char>, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

將特定文化特性格式的數位範圍表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

public static bool TryParse (ReadOnlySpan<char> s, out short result);

參數

s
ReadOnlySpan<Char>

範圍,包含表示要轉換之數位的字元。

result
Int16

當這個方法傳回時,如果轉換成功,則包含相當於 s中所含數位的16位帶正負號的整數值,如果轉換失敗則為零。 如果 s 參數是 nullEmpty,或代表小於 Int16.MinValue 或大於 Int16.MaxValue的數位,則轉換會失敗。 這個參數會未初始化傳遞;任何原本在 result 中提供的值都會遭到覆寫。

傳回

如果成功轉換 strue;否則,false

適用於

.NET 9 及其他版本
產品 版本
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

TryParse(String, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

將數位的字串表示轉換為其相等的16位帶正負號的整數。 傳回值表示轉換成功或失敗。

public static bool TryParse (string s, out short result);
public static bool TryParse (string? s, out short result);

參數

s
String

字串,包含要轉換的數位。

result
Int16

當這個方法傳回時,如果轉換成功,則包含相當於 s中所含數位的16位帶正負號的整數值,如果轉換失敗則為零。 如果 s 參數是 nullEmpty,不是正確的格式,或代表小於 int16.MinValue 或大於 Int16.MaxValue的數位,則轉換會失敗。 這個參數會未初始化傳遞;任何原本在 result 中提供的值都會遭到覆寫。

傳回

如果成功轉換 strue;否則,false

範例

下列範例會呼叫具有數個不同字串值的 Int16.TryParse(String, Int16) 方法。

using System;

public class StringParsing
{
   public static void Main()
   {
      TryToParse(null);
      TryToParse("16051");
      TryToParse("9432.0");
      TryToParse("16,667");
      TryToParse("   -322   ");
      TryToParse("+4302");
      TryToParse("(100);");
      TryToParse("01FA");
   }

   private static void TryToParse(string value)
   {
      short number;
      bool result = Int16.TryParse(value, out number);
      if (result)
      {
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      else
      {
         if (value == null) value = "";
         Console.WriteLine("Attempted conversion of '{0}' failed.", value);
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '16051' to 16051.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100)' failed.
//       Attempted conversion of '01FA' failed.

在這裡範例中,TryParse(String, Int16) 方法無法轉換的一些字串如下:

  • "9432.0". 轉換失敗,因為字串不能包含小數分隔符;它必須只包含整數位數。

  • "16,667". 轉換失敗,因為字串不能包含群組分隔符;它必須只包含整數位數。

  • "(100)". 轉換失敗,因為字串不能包含目前文化特性 NumberFormatInfo.NegativeSignNumberFormatInfo.NumberNegativePattern 屬性所定義的負號。

  • “01FA”。 轉換失敗,因為字串不能包含十六進位數位;它必須只包含十進位數。

備註

Int16.TryParse(String, Int16) 方法與 Int16.Parse(String) 方法不同,方法是傳回布爾值,指出剖析作業是否成功,而不是傳回剖析 Int16 值。 它不需要使用例外狀況處理來測試 FormatExceptions 無效且無法成功剖析。

s 參數應該是數位的字串表示形式:

[ws][sign]digits[ws]

方括弧 ([ 和 ]) 中的項目是選擇性專案。 下表描述每個元素。

元素 描述
ws 選擇性的空格符。
簽署 選擇性符號。
位數 範圍從 0 到 9 的數位序列。

s 參數是使用 NumberStyles.Integer 樣式來解譯。 除了小數字數之外,只允許前置和尾端空格與前置符號。 若要明確定義樣式專案以及可存在於 s中的特定文化特性格式資訊,請使用 Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) 方法。

s 參數是使用目前系統文化特性初始化之 NumberFormatInfo 物件中的格式資訊來剖析。 如需詳細資訊,請參閱 CurrentInfo

這個 TryParse 方法的多載會將 s 參數中的所有數位解譯為十進位數。 若要剖析十六進位數位的字串表示法,請呼叫 Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) 多載。

另請參閱

適用於

.NET 9 及其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

嘗試將字元範圍剖析成值。

public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out short result);

參數

s
ReadOnlySpan<Char>

要剖析的字元範圍。

provider
IFormatProvider

物件,提供與 s相關的特定文化特性格式資訊。

result
Int16

當這個方法傳回時,包含成功剖析 s的結果,或失敗時未定義的值。

傳回

如果已成功剖析 strue;否則,false

適用於

.NET 9 及其他版本
產品 版本
.NET 7, 8, 9

TryParse(String, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

嘗試將字串剖析成值。

public static bool TryParse (string? s, IFormatProvider? provider, out short result);

參數

s
String

要剖析的字串。

provider
IFormatProvider

物件,提供與 s相關的特定文化特性格式資訊。

result
Int16

當這個方法傳回時,包含成功剖析 s 或失敗時未定義值的結果。

傳回

如果已成功剖析 strue;否則,false

適用於

.NET 9 及其他版本
產品 版本
.NET 7, 8, 9

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs

嘗試將UTF-8字元的範圍剖析為值。

public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);

參數

utf8Text
ReadOnlySpan<Byte>

要剖析的UTF-8字元範圍。

style
NumberStyles

數字樣式的位元組合,可以存在於 utf8Text中。

provider
IFormatProvider

物件,提供與 utf8Text相關的特定文化特性格式資訊。

result
Int16

傳回時,包含成功剖析 utf8Text 或失敗時未定義值的結果。

傳回

如果已成功剖析 utf8Texttrue;否則,false

適用於

.NET 9 和 .NET 8
產品 版本
.NET 8, 9

TryParse(ReadOnlySpan<Byte>, Int16)

來源:
Int16.cs
來源:
Int16.cs

嘗試將包含數位字串表示的UTF-8字元範圍轉換為其16位帶正負號的整數對等。

public static bool TryParse (ReadOnlySpan<byte> utf8Text, out short result);

參數

utf8Text
ReadOnlySpan<Byte>

範圍,包含代表要轉換之數位的UTF-8字元。

result
Int16

當這個方法傳回時,會包含16位帶正負號的整數值,相當於轉換成功時,utf8Text 中包含的數位,如果轉換失敗則為零。 這個參數會未初始化傳遞;將覆寫原本在結果中提供的任何值。

傳回

如果成功轉換 utf8Texttrue;否則,false

適用於

.NET 9 和 .NET 8
產品 版本
.NET 8, 9

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

將指定樣式和特定文化特性格式的數位範圍表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out short result);

參數

s
ReadOnlySpan<Char>

範圍,包含表示要轉換之數位的字元。 範圍是使用 style所指定的樣式來解譯。

style
NumberStyles

列舉值的位元組合,表示 s中可以存在的樣式專案。 要指定的一般值是 Integer

provider
IFormatProvider

物件,提供與 s相關的特定文化特性格式資訊。

result
Int16

當這個方法傳回時,如果轉換成功,則包含相當於 s中所含數位的16位帶正負號的整數值,如果轉換失敗則為零。 如果 s 參數是 nullEmpty,則轉換會失敗,格式不符合 style規範,或代表小於 Int16.MinValue 或大於 Int16.MaxValue的數位。 這個參數會未初始化傳遞;任何原本在 result 中提供的值都會遭到覆寫。

傳回

如果成功轉換 strue;否則,false

適用於

.NET 9 及其他版本
產品 版本
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

TryParse(String, NumberStyles, IFormatProvider, Int16)

來源:
Int16.cs
來源:
Int16.cs
來源:
Int16.cs

將指定樣式和特定文化特性格式之數位的字串表示轉換為其16位帶正負號的整數對等。 傳回值表示轉換成功或失敗。

public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out short result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);

參數

s
String

字串,包含要轉換的數位。 字串會使用 style所指定的樣式來解譯。

style
NumberStyles

列舉值的位元組合,表示 s中可以存在的樣式專案。 要指定的一般值是 Integer

provider
IFormatProvider

物件,提供與 s相關的特定文化特性格式資訊。

result
Int16

當這個方法傳回時,如果轉換成功,則包含相當於 s中所含數位的16位帶正負號的整數值,如果轉換失敗則為零。 如果 s 參數是 nullEmpty,則轉換會失敗,格式不符合 style規範,或代表小於 Int16.MinValue 或大於 Int16.MaxValue的數位。 這個參數會未初始化傳遞;任何原本在 result 中提供的值都會遭到覆寫。

傳回

如果成功轉換 strue;否則,false

例外狀況

style 不是 NumberStyles 值。

-或-

style 不是 AllowHexSpecifierHexNumber 值的組合。

範例

下列範例會呼叫具有數個不同字串值的 Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) 方法。

using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "10677";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593";
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles);

      numericString = "12E03";
      CallTryParse(numericString, styles);

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      short number;
      bool result = Int16.TryParse(stringToConvert, styles,
                                   CultureInfo.InvariantCulture, out number);
      if (result)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output to the console:
//       Converted '10677' to 10677.
//       Attempted conversion of '-30677' failed.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to -32575.
//       Attempted conversion of '0x80C1' failed.

備註

Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) 方法與 Int16.Parse(String, NumberStyles, IFormatProvider) 方法不同,方法是傳回布爾值,指出剖析作業是否成功,而不是傳回剖析 Int16 值。 它不需要使用例外狀況處理來測試 FormatExceptions 無效且無法成功剖析。

style 參數會定義剖析作業成功之 s 參數中允許的樣式專案(例如空格符或正負號)。 它必須是來自 NumberStyles 列舉的位旗標組合。 視樣式的值而定,s 參數可能包含下列元素:

[ws][$][sign][digits,]digits[.fractional_digits][e[sign]digits][ws]

或者,如果 style 參數包含 NumberStyles.AllowHexSpecifier

[ws]hexdigits[ws]

方括弧 ([ 和 ]) 中的項目是選擇性專案。 下表描述每個元素。

元素 描述
ws 選擇性的空格符。 如果 style 包含 NumberStyles.AllowLeadingWhite 旗標,或 style 包含 NumberStyles.AllowTrailingWhite 旗標,則空格符會出現在 s 開頭,或 s 結尾。
$ 特定文化特性的貨幣符號。 字串中的位置是由 provider 參數之 GetFormat 方法所傳回之 NumberFormatInfo 物件的 CurrencyPositivePattern 屬性所定義。 如果 style 包含 NumberStyles.AllowCurrencySymbol 旗標,貨幣符號可以出現在 s 中。
簽署 選擇性符號。
位數 從 0 到 9 的數位序列。
特定文化特性的千位分隔符。 如果 style 包含 NumberStyles.AllowThousands 旗標,provider 所指定文化特性的千位分隔符可能會出現在 s 中。
特定文化特性的小數點符號。 如果 style 包含 NumberStyles.AllowDecimalPoint 旗標,provider 所指定之文化特性的小數點符號可能會出現在 s 中。
fractional_digits 數位 0 的一或多個出現次數。 只有 style 包含 NumberStyles.AllowDecimalPoint 旗標時,小數位數才會出現在 s 中。
e 'e' 或 'E' 字元,表示值是以指數表示法表示。 如果 style 包含 NumberStyles.AllowExponent 旗標,s 參數就可以以指數表示法來表示數位。
hexdigits 從 0 到 f 或 0 到 F 的十六進位數位序列。

注意

不論 style 自變數的值為何,剖析作業都會忽略 s 中任何終止的 NUL (U+0000) 字元。

只有小數字數的字串(對應至 NumberStyles.None 旗標),一律會成功剖析。 其餘大部分 NumberStyles 成員控件元素,這些元素可能不是必須存在於此輸入字串中。 下表指出個別 NumberStyles 成員如何影響 s中可能出現的專案。

非複合 NumberStyles 值 除了數位以外,允許的 元素
NumberStyles.None 只有十進位數。
NumberStyles.AllowDecimalPoint fractional_digits 元素。 不過,fractional_digits 必須只包含一或多個 0 位數,否則方法會傳回 false
NumberStyles.AllowExponent s 參數也可以使用指數表示法。 如果 s 表示指數表示法中的數位,它必須代表 Int16 數據類型範圍內沒有非零分數位件的整數。
NumberStyles.AllowLeadingWhite 開頭的 ws ws 專案。
NumberStyles.AllowTrailingWhite 結尾處的 ws 專案。
NumberStyles.AllowLeadingSign 位數之前,可能會出現符號。
NumberStyles.AllowTrailingSign 符號可以在位數之後出現。
NumberStyles.AllowParentheses 以括弧括住數值的括弧形式,符號 專案。
NumberStyles.AllowThousands 專案。
NumberStyles.AllowCurrencySymbol $ 專案。
NumberStyles.Currency 所有元素。 s 參數不能代表十六進位數或指數表示法中的數位。
NumberStyles.Float s開頭或結尾的 ws 專案,s開頭的符號,以及 符號。 s 參數也可以使用指數表示法。
NumberStyles.Number ws符號、千位分隔符()和小數點(.) 元素。
NumberStyles.Any 除了 s 以外的所有樣式都不能代表十六進位數。

如果使用 NumberStyles.AllowHexSpecifier 旗標,s 必須是不含前置詞的十六進位值。 例如,“9AF3” 剖析成功,但 “0x9AF3” 則不會。 style 中唯一可以存在的其他旗標是 NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhite。 (NumberStyles 列舉具有復合樣式,NumberStyles.HexNumber,其中包含兩個空格符旗標。

provider 參數是 IFormatProvider 實作,例如 CultureInfo 物件或 NumberFormatInfo 物件,其 GetFormat 方法會傳回 NumberFormatInfo 物件。 NumberFormatInfo 物件提供有關 s格式的文化特性特定資訊。 如果 providernull,則會使用目前文化特性的 NumberFormatInfo 物件。

另請參閱

適用於

.NET 9 及其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0