Yanıtlar:
Bunu dene:
int x = Int32.Parse(TextBoxD1.Text);
veya daha iyisi:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Ayrıca, Int32.TryParse
iadeleri bool
nedeniyle, ayrıştırma girişiminin sonuçları hakkında karar vermek için dönüş değerini kullanabilirsiniz:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Merak ediyorsanız Parse
ve arasındaki fark TryParse
en iyi şekilde şöyle özetlenir:
Dönüşüm başarısız olursa, TryParse yöntemi bir istisna atmaz dışında TryParse yöntemi Parse yöntemi gibidir. S'nin geçersiz olması ve başarıyla ayrıştırılamaması durumunda FormatException'ı sınamak için özel durum işleme gereksinimini ortadan kaldırır. - MSDN
Int64.Parse()
. Girdi int değilse, o zaman bir yürütme ve bir yığın izleme Int64.Parse
veya boole False
ile Int64.TryParse()
alacaksınız, bu nedenle gibi bir if deyimine ihtiyacınız olacaktır if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Metin kutusunun içeriğinin geçerli olduğundan eminseniz bunu kullanın int
. Daha güvenli bir seçenek
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Bu, kullanabileceğiniz bazı varsayılan değerler sağlayacaktır. Int32.TryParse
ayrıştırılıp ayrıştırılamadığını belirten bir Boolean değeri döndürür, böylece bunu bir if
deyimin koşulu olarak da kullanabilirsiniz .
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int myInt = int.Parse(TextBoxD1.Text)
Başka bir yol:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
İkisi arasındaki fark, metin kutunuzdaki değer dönüştürülemezse birincisinin bir istisna atması, ikincisinin ise yanlış döndürmesi.
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, dışarı NumericJL); if (isNum) // Geri alınan JL, int'e geçebilir ve karşılaştırma için devam edebilir {if (! (NumericJL> = 6)) {//
Bir karakter üzerinde Convert.ToInt32 () kullanırken dikkatli olun! Karakterin UTF-16 kodunu
döndürür !
[i]
Dizeye dizin oluşturma operatörünü kullanarak yalnızca belirli bir konumda erişirseniz, a char
değil döndürür 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);
TryParse deyimi, ayrıştırmanın başarılı olup olmadığını gösteren bir boole döndürür. Başarılı olursa, ayrıştırılan değer ikinci parametreye kaydedilir.
Daha ayrıntılı bilgi için bkz. Int32.TryParse Yöntemi (String, Int32) .
Tadını çıkar...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Burada zaten tarif edilen birçok çözüm olsa da, int.Parse
tüm cevaplarda eksik olan önemli bir şey var. Tipik olarak, sayısal değerlerin dize gösterimleri kültüre göre değişir. Para birimi simgeleri, grup (veya binlerce) ayırıcı ve ondalık ayırıcı gibi sayısal dizelerin öğelerinin tümü kültüre göre değişir.
Bir dizeyi bir tam sayıya ayrıştırmak için sağlam bir yol oluşturmak istiyorsanız, kültür bilgisini dikkate almak önemlidir. Bunu yapmazsanız, geçerli kültür ayarları kullanılır. Bu, dosya formatlarını ayrıştırıyorsanız kullanıcıya oldukça kötü bir sürpriz verebilir - hatta daha da kötüsü. Yalnızca İngilizce ayrıştırmayı istiyorsanız, kullanılacak kültür ayarlarını belirterek açıkça belirtmeniz en iyisidir:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Daha fazla bilgi için CultureInfo, özellikle MSDN'de NumberFormatInfo hakkında bilgi edinin .
Kendi uzantı yönteminizi yazabilirsiniz
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();
}
}
Ve kodun neresinde olursa olsun
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
Bu somut durumda
int yourValue = TextBoxD1.Text.ParseInt();
StringExtensions
yerine çağrılmamalı mı? IntegerExtensions
string
int
TryParse belgelerinde açıklandığı gibi , TryParse () geçerli bir sayının bulunduğunu gösteren bir Boolean döndürür:
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
}
İkisini de kullanabilirsiniz,
int i = Convert.ToInt32(TextBoxD1.Text);
veya
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;
}
Bir dizeyi C # ile int'e dönüştürebilirsiniz:
Yani dönüştürme sınıfının İşlevleri Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
veya kullanarak Parse
ve TryParse
İşlevleri. Örnekler burada verilmiştir .
Bir uzantı yöntemi de kullanabilirsiniz , bu nedenle daha okunabilir olacaktır (herkes normal Ayrıştırma işlevlerine zaten alışmış olsa da).
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);
}
}
Ve sonra bu şekilde diyebilirsiniz:
Dizenizin "50" gibi bir tamsayı olduğundan eminseniz.
int num = TextBoxD1.Text.ParseToInt32();
Emin değilseniz ve çökmeleri önlemek istiyorsanız.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Daha dinamik hale getirmek için, iki katına çıkarmak, yüzmek vb. İçin ayrıştırabilirsiniz, genel bir uzantı yapabilirsiniz.
Dönüştürülmesi string
için int
: için de yapılabilir int
, Int32
, Int64
ve diğer veri tipleri .NET içinde tamsayı veri türlerini yansıtan
Aşağıdaki örnekte bu dönüşüm gösterilmektedir:
Bu değer (bilgi için) int değerine başlatılan veri bağdaştırıcısı öğesi. Aynısı doğrudan gibi yapılabilir,
int xxiiqVal = Int32.Parse(strNabcd);
Ör.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Bu yapardı
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Veya kullanabilirsiniz
int xi = Int32.Parse(x);
TryParse veya dahili işlevler olmadan aşağıdakileri yapabilirsiniz:
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);
Ayrıştırma yöntemi yardımıyla dizeyi bir tamsayı değerine dönüştürebilirsiniz.
Örneğin:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
Ben her zaman böyle yapmak gibi:
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.
}
}
}
Ben böyle yapardım.
Uzun bir yol arıyorsanız, sadece bir yönteminizi oluşturun:
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;
}
YÖNTEM 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
YÖNTEM 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
YÖNTEM 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");
}
Bu kod Visual Studio 2010'da benim için çalışıyor:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Bu benim için çalışıyor:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Aşağıdakileri deneyebilirsiniz. Çalışacak:
int x = Convert.ToInt32(TextBoxD1.Text);
TextBoxD1.Text değişkenindeki dize değeri Int32'ye dönüştürülecek ve x içinde saklanacaktır.
C # v.7'de ek değişken bildirimi olmadan bir satır içi çıkış parametresi kullanabilirsiniz:
int.TryParse(TextBoxD1.Text, out int x);
out
şimdi C # cesaretini parametrelerinin?
Bu size yardımcı olabilir; 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.");
}
}
}