Réponses:
Essaye ça:
int x = Int32.Parse(TextBoxD1.Text);
ou mieux encore:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
De plus, puisque Int32.TryParse
renvoie un, bool
vous pouvez utiliser sa valeur de retour pour prendre des décisions sur les résultats de la tentative d'analyse:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Si vous êtes curieux, la différence entre Parse
et TryParse
se résume mieux comme ceci:
La méthode TryParse est similaire à la méthode Parse, sauf que la méthode TryParse ne lève pas d'exception si la conversion échoue. Il élimine le besoin d'utiliser la gestion des exceptions pour tester une exception FormatException dans le cas où s n'est pas valide et ne peut pas être analysé avec succès. - MSDN
Int64.Parse()
. Si l'entrée n'est pas int, vous obtiendrez une exécution et une trace de pile avec Int64.Parse
, ou le booléen False
avec Int64.TryParse()
, vous aurez donc besoin d'une instruction if, comme if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Utilisez-le si vous êtes certain que le contenu de la zone de texte est valide int
. Une option plus sûre est
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Cela vous fournira une valeur par défaut que vous pouvez utiliser. Int32.TryParse
renvoie également une valeur booléenne indiquant s'il a pu analyser ou non, vous pouvez donc même l'utiliser comme condition d'une if
instruction.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Il ne lancera pas si le texte n'est pas numérique.
int myInt = int.Parse(TextBoxD1.Text)
Une autre façon serait:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
La différence entre les deux est que la première lèverait une exception si la valeur de votre zone de texte ne peut pas être convertie, tandis que la seconde retournerait simplement false.
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, out NumericJL); if (isNum) // Le JL retured est capable de coller à int puis aller de l'avant pour la comparaison {if (! (NumericJL> = 6)) {// Nominate} // else {}}
Vous devez analyser la chaîne et vous devez également vous assurer qu'elle est vraiment au format entier.
La façon la plus simple est la suivante:
int parsedInt = 0;
if (int.TryParse(TextBoxD1.Text, out parsedInt))
{
// Code for if the string was valid
}
else
{
// Code for if the string was invalid
}
Soyez prudent lorsque vous utilisez Convert.ToInt32 () sur un caractère!
Il renverra l' UTF-16 code du personnage!
Si vous accédez à la chaîne uniquement dans une certaine position à l'aide de l' [i]
opérateur d'indexation, elle renverra un char
et non un string
!
String input = "123678";
^
|
int indexOfSeven = 4;
int x = Convert.ToInt32(input[indexOfSeven]); // Returns 55
int x = Convert.ToInt32(input[indexOfSeven].toString()); // Returns 7
int x = 0;
int.TryParse(TextBoxD1.Text, out x);
L'instruction TryParse renvoie un booléen indiquant si l'analyse a réussi ou non. S'il réussit, la valeur analysée est stockée dans le deuxième paramètre.
Voir Int32.TryParse, méthode (String, Int32) pour des informations plus détaillées.
Profitez-en...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Bien qu'il existe déjà de nombreuses solutions qui décrivent int.Parse
, il y a quelque chose d'important qui manque dans toutes les réponses. En règle générale, les représentations sous forme de chaîne des valeurs numériques diffèrent selon la culture. Les éléments des chaînes numériques tels que les symboles monétaires, les séparateurs de groupe (ou de milliers) et les séparateurs décimaux varient tous selon la culture.
Si vous souhaitez créer un moyen robuste d'analyser une chaîne en un entier, il est donc important de prendre en compte les informations de culture. Si vous ne le faites pas, les paramètres de culture actuels seront utilisés. Cela pourrait donner à un utilisateur une très mauvaise surprise - ou pire encore, si vous analysez des formats de fichiers. Si vous souhaitez simplement analyser l'anglais, il est préférable de le rendre simplement explicite, en spécifiant les paramètres de culture à utiliser:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Pour plus d'informations, consultez CultureInfo, en particulier NumberFormatInfo sur MSDN.
Vous pouvez écrire votre propre méthode d'extension
public static class IntegerExtensions
{
public static int ParseInt(this string value, int defaultValue = 0)
{
int parsedValue;
if (int.TryParse(value, out parsedValue))
{
return parsedValue;
}
return defaultValue;
}
public static int? ParseNullableInt(this string value)
{
if (string.IsNullOrEmpty(value))
{
return null;
}
return value.ParseInt();
}
}
Et n'importe où dans le code, il suffit d'appeler
int myNumber = someString.ParseInt(); // Returns value or 0
int age = someString.ParseInt(18); // With default value 18
int? userId = someString.ParseNullableInt(); // Returns value or null
Dans ce cas concret
int yourValue = TextBoxD1.Text.ParseInt();
StringExtensions
place de IntegerExtensions
, puisque ces méthodes d'extension agissent sur un string
et non sur un int
?
Comme expliqué dans la documentation TryParse , TryParse () renvoie un booléen qui indique qu'un nombre valide a été trouvé:
bool success = Int32.TryParse(TextBoxD1.Text, out val);
if (success)
{
// Put val in database
}
else
{
// Handle the case that the string doesn't contain a valid number
}
Vous pouvez utiliser soit,
int i = Convert.ToInt32(TextBoxD1.Text);
ou
int i = int.Parse(TextBoxD1.Text);
//May be quite some time ago but I just want throw in some line for any one who may still need it
int intValue;
string strValue = "2021";
try
{
intValue = Convert.ToInt32(strValue);
}
catch
{
//Default Value if conversion fails OR return specified error
// Example
intValue = 2000;
}
Vous pouvez convertir une chaîne en int en C # en utilisant:
Fonctions de la classe de conversion par exemple Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
ou en utilisant Parse
et TryParse
fonctions. Des exemples sont donnés ici .
Vous pouvez également utiliser une méthode d'extension , elle sera donc plus lisible (bien que tout le monde soit déjà habitué aux fonctions Parse régulières).
public static class StringExtensions
{
/// <summary>
/// Converts a string to int.
/// </summary>
/// <param name="value">The string to convert.</param>
/// <returns>The converted integer.</returns>
public static int ParseToInt32(this string value)
{
return int.Parse(value);
}
/// <summary>
/// Checks whether the value is integer.
/// </summary>
/// <param name="value">The string to check.</param>
/// <param name="result">The out int parameter.</param>
/// <returns>true if the value is an integer; otherwise, false.</returns>
public static bool TryParseToInt32(this string value, out int result)
{
return int.TryParse(value, out result);
}
}
Et puis vous pouvez l'appeler de cette façon:
Si vous êtes sûr que votre chaîne est un entier, comme "50".
int num = TextBoxD1.Text.ParseToInt32();
Si vous n'êtes pas sûr et souhaitez éviter les plantages.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Pour le rendre plus dynamique, afin que vous puissiez également l'analyser pour doubler, flotter, etc., vous pouvez créer une extension générique.
La conversion de string
la int
peut être fait pour: int
, Int32
, Int64
et d' autres types de données reflétant les types de données entières dans .NET
L'exemple ci-dessous montre cette conversion:
Cet élément d'adaptateur de données show (for info) est initialisé à la valeur int. La même chose peut être faite directement comme,
int xxiiqVal = Int32.Parse(strNabcd);
Ex.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Cela ferait
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Ou vous pouvez utiliser
int xi = Int32.Parse(x);
Consultez Microsoft Developer Network pour plus d'informations
Vous pouvez faire comme ci-dessous sans TryParse ou fonctions intégrées:
static int convertToInt(string a)
{
int x = 0;
for (int i = 0; i < a.Length; i++)
{
int temp = a[i] - '0';
if (temp != 0)
{
x += temp * (int)Math.Pow(10, (a.Length - (i+1)));
}
}
return x;
}
int i = Convert.ToInt32(TextBoxD1.Text);
Vous pouvez convertir une chaîne en une valeur entière à l'aide de la méthode d'analyse.
Par exemple:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
La façon dont je le fais toujours est la suivante:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace example_string_to_int
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string a = textBox1.Text;
// This turns the text in text box 1 into a string
int b;
if (!int.TryParse(a, out b))
{
MessageBox.Show("This is not a number");
}
else
{
textBox2.Text = a+" is a number" ;
}
// Then this 'if' statement says if the string is not a number, display an error, else now you will have an integer.
}
}
}
Voilà comment je le ferais.
Si vous cherchez le long chemin, créez simplement votre méthode:
static int convertToInt(string a)
{
int x = 0;
Char[] charArray = a.ToCharArray();
int j = charArray.Length;
for (int i = 0; i < charArray.Length; i++)
{
j--;
int s = (int)Math.Pow(10, j);
x += ((int)Char.GetNumericValue(charArray[i]) * s);
}
return x;
}
MÉTHODE 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
MÉTHODE 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
MÉTHODE 3
int TheAnswer3 = 0;
try {
TheAnswer3 = Int32.Parse("42");
}
catch (FormatException) {
Console.WriteLine("String not in the correct format for an Integer");
}
catch (ArgumentNullException) {
Console.WriteLine("String is null");
}
catch (OverflowException) {
Console.WriteLine("String represents a number less than"
+ "MinValue or greater than MaxValue");
}
Ce code fonctionne pour moi dans Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Cela fonctionne pour moi:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Vous pouvez essayer ce qui suit. Ça va marcher:
int x = Convert.ToInt32(TextBoxD1.Text);
La valeur de chaîne dans la variable TextBoxD1.Text sera convertie en Int32 et stockée dans x.
Dans C # v.7, vous pouvez utiliser un paramètre inline out, sans déclaration de variable supplémentaire:
int.TryParse(TextBoxD1.Text, out int x);
out
paramètres ne sont-ils pas découragés en C # maintenant?
Cela peut vous aider; D
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
float Stukprijs;
float Aantal;
private void label2_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("In de eersre textbox staat een geldbedrag." + Environment.NewLine + "In de tweede textbox staat een aantal." + Environment.NewLine + "Bereken wat er moetworden betaald." + Environment.NewLine + "Je krijgt 15% korting over het bedrag BOVEN de 100." + Environment.NewLine + "Als de korting meer dan 10 euri is," + Environment.NewLine + "wordt de korting textbox lichtgroen");
}
private void button1_Click(object sender, EventArgs e)
{
errorProvider1.Clear();
errorProvider2.Clear();
if (float.TryParse(textBox1.Text, out Stukprijs))
{
if (float.TryParse(textBox2.Text, out Aantal))
{
float Totaal = Stukprijs * Aantal;
string Output = Totaal.ToString();
textBox3.Text = Output;
if (Totaal >= 100)
{
float korting = Totaal - 100;
float korting2 = korting / 100 * 15;
string Output2 = korting2.ToString();
textBox4.Text = Output2;
if (korting2 >= 10)
{
textBox4.BackColor = Color.LightGreen;
}
else
{
textBox4.BackColor = SystemColors.Control;
}
}
else
{
textBox4.Text = "0";
textBox4.BackColor = SystemColors.Control;
}
}
else
{
errorProvider2.SetError(textBox2, "Aantal plz!");
}
}
else
{
errorProvider1.SetError(textBox1, "Bedrag plz!");
if (float.TryParse(textBox2.Text, out Aantal))
{
}
else
{
errorProvider2.SetError(textBox2, "Aantal plz!");
}
}
}
private void BTNwissel_Click(object sender, EventArgs e)
{
//LL, LU, LR, LD.
Color c = LL.BackColor;
LL.BackColor = LU.BackColor;
LU.BackColor = LR.BackColor;
LR.BackColor = LD.BackColor;
LD.BackColor = c;
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("zorg dat de kleuren linksom wisselen als je op de knop drukt.");
}
}
}