Exportar (0) Imprimir
Expandir todo

Parsing Numeric Strings

All numeric types have a static Parse method that you can use to convert the string representation of a number into a numeric value. This method allows you to parse strings that were produced using one of the format specifiers covered in Standard Numeric Format Strings and Custom Numeric Format Strings.

The characters used to represent currency symbols, thousands separators, and decimal points are defined by format providers. The Parse method accepts a format provider that allows you to parse culture-specific strings. If no format provider is specified, the provider that is associated with the current thread culture is used. For more information, see Formatting Types.

The following code example converts a string to an integer value, increments that value, and displays the result.


string myString = "12345";
try
{
   int myInt = int.Parse(myString);
   myInt++;
   outputBlock.Text += myInt + "\n"; 
}
catch (FormatException)
{
   outputBlock.Text += String.Format("Unable to parse '{0}'.'", 
                                     myString) + "\n";
}
// The example displays the following output: 
//      12346


Some overloads of the Parse method include a style parameter of type System.Globalization.NumberStyles. The members of the NumberStyles enumeration define the elements (such as white space, currency symbols, or thousands separators) that may be present in the string to be parsed. If these elements are not permitted by the style parameter but they are present in the string, the parse operation fails. For example, in the en-US culture, a string that contains a comma cannot be converted to an integer value using the Parse method if style does not include the NumberStyles.AllowThousands flag. Some of the styles provided by the NumberStyles enumeration include the following:

For a complete table of numeric style elements, see the NumberStyles enumeration documentation.

The following example illustrates the improper way to parse a string that contains a nonnumeric character, in this case, a thousands separator. A new CultureInfo object is first created and passed to the Int32.Parse(String, IFormatProvider) method to specify that the en-US culture should be used for parsing. Because the thousands separator is not allowed, the parse operation throws a FormatException.


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      CultureInfo myCultureInfo = new CultureInfo("en-US");
      string myString = "123,456";
      try
      {
         int myInt = int.Parse(myString, myCultureInfo);
         outputBlock.Text += myInt + "\n"; 
      }
      catch (FormatException)
      {
         outputBlock.Text += String.Format("Unable to parse '{0}'.", 
                                            myString) + "\n";              
      }
   }
}
// The example displays the following output:
//     Unable to parse '123,456'.      


When you apply the NumberStyles.AllowThousands flag, the Int32.Parse(String, NumberStyles, IFormatProvider) method overload handles the comma that raised the exception in the previous example. The following code example uses the same string as the previous example, but does not raise an exception. As in the previous example, a new CultureInfo object is first created. This time, it is passed to the Int32.Parse(String, NumberStyles, IFormatProvider) method overload to specify that the thousands separator used by the en-US culture is allowed in the input string.


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      CultureInfo myCultureInfo = new CultureInfo("en-US");
      string myString = "123,456";
      try
      {
         int myInt = int.Parse(myString, NumberStyles.AllowThousands, 
                               myCultureInfo);
         outputBlock.Text += myInt + "\n"; 
      }
      catch (FormatException)
      {
         outputBlock.Text += String.Format("Unable to parse '{0}'.", 
                                            myString) + "\n";              
      }
   }
}
// The example displays the following output:
//     123456      


Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft