Поделиться через


NumberStyles Перечисление

Определение

Определяет стили, разрешенные в аргументах числовой строки, передаваемые методам Parse и TryParse целочисленных типов и числовых типов с плавающей запяой.

Это перечисление поддерживает побитовую комбинацию значений его членов.

public enum class NumberStyles
[System.Flags]
public enum NumberStyles
[System.Flags]
[System.Serializable]
public enum NumberStyles
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum NumberStyles
[<System.Flags>]
type NumberStyles = 
[<System.Flags>]
[<System.Serializable>]
type NumberStyles = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NumberStyles = 
Public Enum NumberStyles
Наследование
NumberStyles
Атрибуты

Поля

AllowBinarySpecifier 1024

Указывает, что числовая строка представляет двоичное значение. Допустимые двоичные значения включают числовые цифры 0 и 1. Строки, проанализированные с помощью этого стиля, не используют префикс; 0b не может использоваться. Строка, проанализированная со стилем , AllowBinarySpecifier всегда будет интерпретироваться как двоичное значение. С флагом AllowBinarySpecifier можно объединять только флаги AllowLeadingWhite и AllowTrailingWhite. Перечисление NumberStyles включает составной стиль BinaryNumber, состоящий из этих трех флагов.

AllowCurrencySymbol 256

Указывает, что числовая строка может содержать символ денежной единицы. Допустимые символы денежных единиц определяются свойством CurrencySymbol.

AllowDecimalPoint 32

Указывает, что числовая строка может включать десятичный разделитель. Если значение NumberStyles включает флаг AllowCurrencySymbol и анализируемая строка включает обозначение денежной единицы, символ десятичного разделителя определяется свойством CurrencyDecimalSeparator. В противном случае символ десятичного разделителя определяется свойством NumberDecimalSeparator.

AllowExponent 128

Указывает, что числовая строка может быть в экспоненциальном представлении. Флаг AllowExponent позволяет включить в разбираемую строку экспоненту, начинающуюся с символа E или e, за которым следует необязательный положительный или отрицательный знак и целое число. Другими словами, он успешно выполняет анализ строки в форме nnnExx, nnnE+xx и nnnE-xx. Он не допускает наличия десятичного разделителя или знака в значащей части числа, или мантиссе; чтобы разрешить эти элементы в анализируемой строке, используйте флаги AllowDecimalPoint и AllowLeadingSign или составной стиль, включающий эти отдельные флаги.

AllowHexSpecifier 512

Указывает, что числовая строка представляет шестнадцатеричное значение. К допустимым шестнадцатеричным значениям относятся цифры 0-9 и шестнадцатеричные знаки A-F и a-f. Строки, проанализированные с помощью этого стиля, не могут иметь префикс "0x" или "&h". Строка, анализируемая с использованием стиля AllowHexSpecifier, всегда интерпретируется как шестнадцатеричное значение. С флагом AllowHexSpecifier можно объединять только флаги AllowLeadingWhite и AllowTrailingWhite. Перечисление NumberStyles включает составной стиль HexNumber, состоящий из этих трех флагов.

AllowLeadingSign 4

Указывает, что числовая строка может включать начальный знак. Допустимые начальные знаки определяются свойствами PositiveSign и NegativeSign.

AllowLeadingWhite 1

Указывает, что анализируемая строка может начинаться со знаков пробела. Допустимые знаки пробела имеют следующие значения в кодировке Юникод: U+0009, U+000A, U+000B, U+000C, U+000D и U+0020. Обратите внимание, что это подмножество символов, для которых метод IsWhiteSpace(Char) возвращает значение true.

AllowParentheses 16

Указывает, что в числовой строке может находиться одна пара скобок, в которых заключено число. Скобки означают, что анализируемая строка представляет отрицательное число.

AllowThousands 64

Указывает, что в числовой строке могут находиться разделители групп, например символы, отделяющие сотни от тысяч. NumberStyles Если значение включает AllowCurrencySymbol флаг, а строка для анализа содержит символ валюты, допустимый символ разделителя группы определяется свойством CurrencyGroupSeparator , а количество цифр в каждой группе определяется свойством CurrencyGroupSizes . В противном случае допустимый разделитель групп определяется свойством NumberGroupSeparator, а количество цифр в каждой группе определяется свойством NumberGroupSizes.

AllowTrailingSign 8

Указывает, что числовая строка может включать конечный знак. Допустимые конечные знаки определяются свойствами PositiveSign и NegativeSign.

AllowTrailingWhite 2

Указывает, что анализируемая строка может оканчиваться знаками пробела. Допустимые знаки пробела имеют следующие значения в кодировке Юникод: U+0009, U+000A, U+000B, U+000C, U+000D и U+0020. Обратите внимание, что это подмножество символов, для которых метод IsWhiteSpace(Char) возвращает значение true.

Any 511

Указывает, что используются все стили, кроме AllowHexSpecifier и AllowBinarySpecifier. Это стили составного числа.

BinaryNumber 1027

Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite и AllowBinarySpecifier. Это стили составного числа.

Currency 383

Указывает, что используются все стили, кроме AllowExponent и AllowHexSpecifier. Это стили составного числа.

Float 167

Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowDecimalPoint и AllowExponent. Это стили составного числа.

HexNumber 515

Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite и AllowHexSpecifier. Это стили составного числа.

Integer 7

Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite и AllowLeadingSign. Это стили составного числа.

None 0

Указывает, что элементы стиля, такие как начальные или конечные пробел, тысячи сепараторы или десятичного разделителя, не могут присутствовать в анализируемой строки. Анализируемая строка должна состоять только из целых десятичных чисел.

Number 111

Указывает, что используются стили AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign, AllowDecimalPoint и AllowThousands. Это стили составного числа.

Примеры

В этом примере показано, как проанализировать строку в 32-разрядное целое число с помощью различных NumberStyles флагов.

using namespace System;
using namespace System::Text;
using namespace System::Globalization;


int main()
{
    // Parse the string as a hex value and display the
    // value as a decimal.
    String^ numberString = "A";
    int stringValue = Int32::Parse(numberString, NumberStyles::HexNumber);
    Console::WriteLine("{0} in hex = {1} in decimal.",
        numberString, stringValue);

    // Parse the string, allowing a leading sign, and ignoring
    // leading and trailing white spaces.
    numberString = "    -45   ";
    stringValue =Int32::Parse(numberString, NumberStyles::AllowLeadingSign |
        NumberStyles::AllowLeadingWhite | NumberStyles::AllowTrailingWhite);
    Console::WriteLine("'{0}' parsed to an int is '{1}'.",
        numberString, stringValue);

    // Parse the string, allowing parentheses, and ignoring
    // leading and trailing white spaces.
    numberString = "    (37)   ";
    stringValue = Int32::Parse(numberString, NumberStyles::AllowParentheses |
        NumberStyles::AllowLeadingSign | NumberStyles::AllowLeadingWhite |
        NumberStyles::AllowTrailingWhite);

    Console::WriteLine("'{0}' parsed to an int is '{1}'.",
        numberString, stringValue);
}

// This code produces the following output.
//
// A in hex = 10 in decimal.
// '    -45   ' parsed to an int is '-45'.
// '    (37)   ' parsed to an int is '-37'.
using System;
using System.Text;
using System.Globalization;

public sealed class App
{
    static void Main()
    {
        // Parse the string as a hex value and display the value as a decimal.
        String num = "A";
        int val = int.Parse(num, NumberStyles.HexNumber);
        Console.WriteLine("{0} in hex = {1} in decimal.", num, val);

        // Parse the string, allowing a leading sign, and ignoring leading and trailing white spaces.
        num = "    -45   ";
        val = int.Parse(num, NumberStyles.AllowLeadingSign |
            NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite);
        Console.WriteLine("'{0}' parsed to an int is '{1}'.", num, val);

        // Parse the string, allowing parentheses, and ignoring leading and trailing white spaces.
        num = "    (37)   ";
        val = int.Parse(num, NumberStyles.AllowParentheses | NumberStyles.AllowLeadingSign |                         NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite);
        Console.WriteLine("'{0}' parsed to an int is '{1}'.", num, val);
    }
}

// This code produces the following output.
//
// A in hex = 10 in decimal.
// '    -45   ' parsed to an int is '-45'.
// '    (37)   ' parsed to an int is '-37'.
Imports System.Globalization
Imports System.Text

Public Module Example
   Public Sub Main() 
      ' Parse the string as a hex value and display the value as a decimal.
      Dim num As String = "A"
      Dim val As Integer = Int32.Parse(num, NumberStyles.HexNumber)
      Console.WriteLine("{0} in hex = {1} in decimal.", num, val)

      ' Parse the string, allowing a leading sign, and ignoring leading and trailing white spaces.
      num = "    -45   "
      val = Integer.Parse(num, NumberStyles.AllowLeadingSign Or 
                               NumberStyles.AllowLeadingWhite Or 
                               NumberStyles.AllowTrailingWhite)
      Console.WriteLine("'{0}' parsed to an integer is '{1}'.", num, val)

      ' Parse the string, allowing parentheses, and ignoring leading and trailing white spaces.
      num = "    (37)   "
      val = Integer.Parse(num, NumberStyles.AllowParentheses Or 
                               NumberStyles.AllowLeadingSign Or
                               NumberStyles.AllowLeadingWhite Or 
                               NumberStyles.AllowTrailingWhite)
      Console.WriteLine("'{0}' parsed to an integer is '{1}'.", num, val)
   End Sub
End Module
' The example displays the following output:
'       A in hex = 10 in decimal.
'       '    -45   ' parsed to an int is '-45'.
'       '    (37)   ' parsed to an int is '-37'.

Комментарии

Перечисление NumberStyles состоит из двух типов значений перечисления, которые используются для анализа строковых представлений числовых значений:

  • Флаги отдельных полей, которые определяют определенные элементы стиля (например, пробелы и разделители групп), которые могут присутствовать в анализируемой строке.
  • Стили составных чисел, состоящие из нескольких флагов полей, определяющих элементы стиля, которые могут присутствовать в анализируемой строке.

AllowHexSpecifierЗа исключением , флаги отдельных полей в NumberStyles перечислении определяют элементы стиля, используемые при анализе строкового представления десятичного числа. None указывает, что в анализируемой строке могут присутствовать только цифры. Оставшиеся отдельные флаги полей определяют элементы стиля, которые могут присутствовать в строковом представлении десятичного числа для успешного выполнения операции синтаксического анализа. В отличие от этого, AllowHexSpecifier флаг указывает, что анализируемая строка всегда интерпретируется как шестнадцатеричное значение. Единственными флагами полей, которые можно использовать с AllowHexSpecifier , являются AllowLeadingWhite и AllowTrailingWhite. Перечисление NumberStyles включает стиль HexNumberсоставных чисел , который состоит из всех трех флагов.

Символы (например, символ валюты, разделитель групп, десятичный разделитель, положительные и отрицательные знаки), которые могут отображаться в анализируемой строке, определяются членами объекта , передаваемого System.Globalization.NumberFormatInfo неявно или явно методу Parse . Таблица members в этом разделе содержит описание каждого отдельного флага и его связь со NumberFormatInfo свойствами.

В следующей таблице перечислены стили составных чисел и указаны флаги отдельных полей, которые они включают. Значение "1" в ячейке указывает, что стиль составных чисел включает в себя стиль отдельных чисел в этой строке. Значение "0" означает, что стиль составных чисел не включает стиль отдельного номера.

Любой Валюта Float Целое число Number HexNumber BinaryNumber
AllowBinarySpecifier (0x0400) 0 0 0 0 0 0 1
AllowHexSpecifier (0x0200) 0 0 0 0 0 1 0
AllowCurrencySymbol (0x0100) 1 1 0 0 0 0 0
Allow Exponent (0x0080) 1 0 1 0 0 0 0
AllowThousands (0x0040) 1 1 0 0 1 0 0
AllowDecimalPoint (0x0020) 1 1 1 0 1 0 0
AllowParentheses (0x0010) 1 1 0 0 0 0 0
AllowTrailingSign (0x0008) 1 1 0 0 1 0 0
AllowLeadingSign (0x0004) 1 1 1 1 1 0 0
AllowTrailingWhite (0x0002) 1 1 1 1 1 1 1
AllowLeadingWhite (0x0001) 1 1 1 1 1 1 1
(0x1ff) (0x17f) (0x0a7) (0x007) (0x06f) (0x203) (0x403)

Применяется к

См. также раздел