Risposte:
Prova questo:
int x = Int32.Parse(TextBoxD1.Text);
o meglio ancora:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Inoltre, poiché Int32.TryParse
restituisce a bool
è possibile utilizzare il valore restituito per prendere decisioni sui risultati del tentativo di analisi:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Se sei curioso, la differenza tra Parse
ed TryParse
è meglio riassunta in questo modo:
Il metodo TryParse è simile al metodo Parse, tranne per il fatto che il metodo TryParse non genera un'eccezione se la conversione non riesce. Elimina la necessità di utilizzare la gestione delle eccezioni per verificare una FormatException nel caso in cui s non sia valido e non possa essere analizzato correttamente. - MSDN
Int64.Parse()
. Se l'input è non-int, otterrai un'esecuzione e una traccia dello stack con Int64.Parse
o il valore booleano False
con Int64.TryParse()
, quindi avresti bisogno di un'istruzione if, come if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Utilizzalo se sei sicuro che il contenuto della casella di testo sia valido int
. Un'opzione più sicura è
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Questo ti fornirà un valore predefinito che puoi usare. Int32.TryParse
restituisce anche un valore booleano che indica se è stato in grado di analizzare o meno, quindi è anche possibile utilizzarlo come condizione di if
un'istruzione.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Non verrà generato se il testo non è numerico.
int myInt = int.Parse(TextBoxD1.Text)
Un altro modo sarebbe:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
La differenza tra i due è che il primo genererebbe un'eccezione se il valore nella casella di testo non può essere convertito, mentre il secondo restituirà semplicemente false.
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, out NumericJL); if (isNum) // Il JL ritirato è in grado di passare a int quindi andare avanti per il confronto {if (! (NumericJL> = 6)) {// Nominate} // else {}}
Devi analizzare la stringa e devi anche assicurarti che sia veramente nel formato di un numero intero.
Il modo più semplice è questo:
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
}
Fai attenzione quando usi Convert.ToInt32 () su un carattere!
Restituirà il codice UTF-16 del personaggio!
Se si accede alla stringa solo in una determinata posizione utilizzando l' [i]
operatore di indicizzazione, restituirà a char
e non a 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'istruzione TryParse restituisce un valore booleano che indica se l'analisi ha avuto esito positivo o meno. Se ha esito positivo, il valore analizzato viene memorizzato nel secondo parametro.
Vedere Metodo Int32.TryParse (String, Int32) per informazioni più dettagliate.
Divertirsi...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Mentre ci sono già molte soluzioni che descrivono int.Parse
, manca qualcosa di importante in tutte le risposte. In genere, le rappresentazioni di stringa di valori numerici differiscono per cultura. Gli elementi di stringhe numeriche come simboli di valuta, separatori di gruppi (o migliaia) e separatori decimali variano in base alla cultura.
Se si desidera creare un modo affidabile per analizzare una stringa in un numero intero, è quindi importante tenere conto delle informazioni sulla cultura. In caso contrario, verranno utilizzate le impostazioni di cultura correnti . Ciò potrebbe dare all'utente una brutta sorpresa, o peggio ancora, se stai analizzando i formati di file. Se vuoi solo analizzare l'inglese, è meglio renderlo esplicito, specificando le impostazioni della cultura da usare:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Per ulteriori informazioni, leggere su CultureInfo, in particolare NumberFormatInfo su MSDN.
Puoi scrivere il tuo metodo di estensione
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();
}
}
E ovunque nel codice basta chiamare
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
In questo caso concreto
int yourValue = TextBoxD1.Text.ParseInt();
StringExtensions
invece di IntegerExtensions
, poiché questi metodi di estensione agiscono su un string
e non su un int
?
Come spiegato nella documentazione di TryParse , TryParse () restituisce un valore booleano che indica che è stato trovato un numero valido:
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
}
int x = Int32.TryParse(TextBoxD1.Text, out x) ? x : 0;
Puoi usare uno,
int i = Convert.ToInt32(TextBoxD1.Text);
o
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;
}
Puoi convertire una stringa in int in C # usando:
Funzioni di classe convertito cioè Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
oppure utilizzando Parse
e TryParse
funzioni. Gli esempi sono riportati qui .
È inoltre possibile utilizzare un metodo di estensione , quindi sarà più leggibile (sebbene tutti siano già abituati alle normali funzioni di analisi).
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);
}
}
E poi puoi chiamarlo in questo modo:
Se sei sicuro che la tua stringa sia un numero intero, come "50".
int num = TextBoxD1.Text.ParseToInt32();
Se non si è sicuri e si desidera prevenire arresti anomali.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Per renderlo più dinamico, in modo da poterlo analizzare anche in double, float, ecc., Puoi creare un'estensione generica.
Conversione di string
a int
può essere fatto per: int
, Int32
, Int64
e altri tipi di dati che riflette i tipi di dati interi in NET
L'esempio seguente mostra questa conversione:
Questo mostra (per informazioni) elemento adattatore dati inizializzato sul valore int. Lo stesso può essere fatto direttamente come
int xxiiqVal = Int32.Parse(strNabcd);
Ex.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Questo farebbe
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Oppure puoi usare
int xi = Int32.Parse(x);
Fare riferimento a Microsoft Developer Network per ulteriori informazioni
Puoi fare come di seguito senza TryParse o funzioni integrate:
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);
È possibile convertire la stringa in un valore intero con l'aiuto del metodo di analisi.
Per esempio:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
Il modo in cui lo faccio sempre è così:
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.
}
}
}
Ecco come lo farei.
Se stai cercando una strada lunga, crea il tuo unico metodo:
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;
}
METODO 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
METODO 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
METODO 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");
}
Questo codice funziona per me in Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Questo funziona per me:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Puoi provare quanto segue. Funzionerà:
int x = Convert.ToInt32(TextBoxD1.Text);
Il valore di stringa nella variabile TextBoxD1.Text verrà convertito in Int32 e verrà archiviato in x.
In C # v.7 è possibile utilizzare un parametro out inline, senza un'ulteriore dichiarazione delle variabili:
int.TryParse(TextBoxD1.Text, out int x);
out
parametri non sono scoraggiati in C # adesso?
Questo può aiutarti; 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.");
}
}
}