J'ai un TextBoxD1.Text
et je veux le convertir en un int
pour le stocker dans une base de données.
Comment puis-je faire ceci?
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
retourne un bool
, vous pouvez utiliser sa valeur de retour pour prendre des décisions concernant 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 de la manière suivante:
La méthode TryParse est semblable à la méthode Parse, sauf que la méthode TryParse ne lève pas d'exception si la conversion échoue. Cela élimine la nécessité 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é correctement. - MSDN
Convert.ToInt32( TextBoxD1.Text );
Utilisez cette option si vous êtes sûr que le contenu de la zone de texte est un entier valide. Une option plus sûre est
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Cela vous donnera une valeur par défaut que vous pourrez utiliser. Int32.TryParse
renvoie également une valeur booléenne indiquant si l'analyse a été effectuée ou non. Vous pouvez même l'utiliser comme condition d'une instruction if
.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Il ne jettera 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 réside dans le fait que le premier lève une exception si la valeur de votre zone de texte ne peut pas être convertie, tandis que le second renvoie simplement false.
Vous devez analyser la chaîne et vous assurer qu'elle est vraiment au format d'un entier.
Le moyen le plus simple est le suivant:
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
}
Profitez-en...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
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. Si cela réussit, la valeur analysée est stockée dans le deuxième paramètre.
Voir méthode Int32.TryParse (String, Int32) pour plus d'informations.
Soyez prudent lorsque vous utilisez Convert.ToInt32 () sur un caractère!
Il retournera le TF-16 Code du personnage!
Si vous n'accédez à la chaîne que dans une certaine position à l'aide de l'opérateur d'indexation [i]
, il retournera un char
et non un string
!
String input = "123678";
int x = Convert.ToInt32(input[4]); // returns 55
int x = Convert.ToInt32(input[4].toString()); // returns 7
Bien qu'il existe déjà de nombreuses solutions décrivant int.Parse
, il manque quelque chose d'important dans toutes les réponses. Généralement, les représentations sous forme de chaîne de valeurs numériques diffèrent selon les cultures. Les éléments de chaînes numériques tels que les symboles monétaires, les séparateurs de groupe (ou des milliers) et les séparateurs décimaux varient en fonction de 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, le paramètres de culture actuels sera utilisé. Cela pourrait donner à un utilisateur une surprise plutôt désagréable, voire pire, si vous analysez les formats de fichiers. Si vous souhaitez simplement analyser l'anglais, il est préférable de l'expliciter simplement 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 extesion
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 où que ce soit 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();
Comme expliqué dans la documentation TryParse , TryParse () renvoie un booléen indiquant 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);
Vous pouvez convertir une chaîne en int en C # en utilisant:
Fonctions de la classe de conversion, à savoir Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
ou en utilisant Parse
et TryParse
Fonctions. Des exemples sont donnés ici .
//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;
}
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
La conversion de string
à int
peut être effectuée pour: int
, Int32
, Int64
et d'autres types de données reflétant des types de données entiers dans .NET
L'exemple ci-dessous montre cette conversion:
Cet élément de l'adaptateur de données show (pour 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);
Reportez-vous à réseau de développeurs Microsoft pour plus d'informations
vous pouvez faire comme ci-dessous sans fonctions TryParse ou 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 ;
}
Vous pouvez aussi utiliser une méthode d'extension , donc elle sera plus lisible (bien que tout le monde soit déjà habitué aux fonctions normales d'analyse).
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 ensuite, vous pouvez l'appeler ainsi:
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 que vous souhaitez éviter les accidents.
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 l’analyser également pour doubler, flotter, etc., vous pouvez créer une extension générique.
la façon dont je fais toujours c'est comme ça
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 statment says if the string not a number display an error elce now you will have an intager.
}
}
}
voici comment je le ferais, j'espère que cela aide. (:
Vous pouvez convertir une chaîne en valeur entière à l'aide de la méthode parse.
Par exemple:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
int i = Convert.ToInt32(TextBoxD1.Text);
Le moyen le plus simple consiste à utiliser un utilitaire d'extension comme ceci:
public static class StrExtensions
{
public static int ToInt(this string s, int defVal = 0) => int.TryParse(s, out var v) ? v : defVal;
public static int? ToNullableInt(this string s, int? defVal = null) => int.TryParse(s, out var v) ? v : defVal;
}
L'utilisation est si simple:
var x = "123".ToInt(); // 123
var y = "abc".ToInt(); // 0
string t = null;
var z = t.ToInt(-1); // -1
var w = "abc".ToNullableInt(); // null
Vous pouvez essayer ça, ça va marcher:
int x = Convert.ToInt32(TextBoxD1.Text);
La valeur de chaîne dans la variable TextBoxD1.Text sera convertie en Int32 et sera stockée dans x.
METHODE 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
METHODE 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
METHODE 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");
}
Si vous recherchez le chemin le plus long, créez simplement votre seule 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;
}
Ce code fonctionne pour moi dans Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);