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

Определение

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

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

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
Атрибуты

Поля

AllowCurrencySymbol 256

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

AllowDecimalPoint 32

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

AllowExponent 128

Указывает, что числовая строка может быть в экспоненциальном представлении. Флаг AllowExponent позволяет включить в разбираемую строку экспоненту, начинающуюся с символа E или e, за которым следует необязательный положительный или отрицательный знак и целое число. Другими словами, он успешно выполняет анализ строки в форме nnn E xx, nnn E+xx и nnn E-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. Это стили составного числа.

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 хекснумбер
AllowHexSpecifier (0x0200) 0 0 0 0 0 1
Алловкурренцисимбол (0x0100) 1 1 0 0 0 0
AllowExponent (0x0080) 1 0 1 0 0 0
AllowThousands (0x0040) 1 1 0 0 1 0
AllowDecimalPoint (0x0020) 1 1 1 0 1 0
Алловпаренсесес (0x0010) 1 1 0 0 0 0
Алловтраилингсигн (0x0008) 1 1 0 0 1 0
AllowLeadingSign (0x0004) 1 1 1 1 1 0
AllowTrailingWhite (0x0002) 1 1 1 1 1 1
AllowLeadingWhite (0x0001) 1 1 1 1 1 1
(0x1ff) (0x17f) (0x0a7) (0x007) (0x06f) (0x203)

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

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