У меня есть TextBoxD1.Text
, и я хочу преобразовать его в int
, чтобы сохранить его в базе данных.Как преобразовать String в Int?
Как это сделать?
У меня есть TextBoxD1.Text
, и я хочу преобразовать его в int
, чтобы сохранить его в базе данных.Как преобразовать String в Int?
Как это сделать?
Попробуйте это:
int x = Int32.Parse(TextBoxD1.Text);
или еще лучше:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Кроме того, поскольку Int32.TryParse
возвращает bool
вы можете использовать возвращаемое значение для принятия решения о результатах разбора попытка:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Если вам интересно, то разница между Parse
и TryParse
лучше всего подытожить следующим образом:
Метод TryParse подобен методе Анализировать , за исключением методы TryParse не бросает исключение, если преобразования выходит из строя. Это устраняет необходимость использования обработчика исключений для проверки для исключения FormatException в случае , что s недействителен и не может быть успешно проанализирован. - MSDN
Convert.ToInt32(TextBoxD1.Text);
Используйте это, если вы уверены, что содержимое текстового поля является допустимым int. Более безопасный вариант -
int val = 0;
Int32.TryParse(TextBoxD1.Text, out val);
Это предоставит вам определенное значение по умолчанию, которое вы можете использовать. Int32.TryParse
также возвращает логическое значение, указывающее, было ли оно способно анализировать или нет, поэтому вы можете даже использовать его в качестве условия инструкции if
.
if(Int32.TryParse(TextBoxD1.Text, out val){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Он не бросит, если текст не является числовым значением.
Вам нужно разобрать строку, и вам также необходимо убедиться, что она действительно в формате целого.
Самый простой способ заключается в следующем:
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
}
int myInt = int.Parse(TextBoxD1.Text)
Другой способ:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
Разница между ними состоит в том, что первый один будет сгенерировано исключение, если значение ваше текстовое поле не может быть преобразовано, а второе - только false.
Вышеупомянутая логическая переменная очень полезна, мы используем преобразованное значение для comaprison, допустим, в условии if. 'code' int NumericJL; bool isNum = int.TryParse (nomeeJobBand, out NumericJL); если (isNum) // The The retured JL способен pasred к Int затем идти вперед по сравнению { если (! (NumericJL> = 6)) { // Номинировать } // еще {}} – baymax
Как объяснено в TryParse documentation, TryParse() возвращает логическое значение, которое указывает, что действительное число было найдено:
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 = 0;
int.TryParse(TextBoxD1.Text, out x);
Оператор TryParse возвращает логическое значение, представляющее ли синтаксический анализ успешно или нет. Если это удалось, анализируемое значение сохраняется во втором параметре.
Для получения более подробной информации см. Int32.TryParse Method (String, Int32).
int i = Convert.ToInt32(TextBoxD1.Text);
Вы также можете использовать extension method, так что это будет более удобным для чтения (хотя все уже привыкли к регулярным функциям Parse).
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);
}
}
И тогда вы можете назвать это таким образом:
Если вы уверены, что ваша строка является целым числом, например, «50».
int num = TextBoxD1.Text.ParseToInt32();
Если вы не уверены и хотите предотвратить аварии.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Чтобы сделать его более динамичным, так что вы можете разобрать его и удвоить, поплавок и т.д., вы можете сделать общее расширение.
Наслаждайтесь ...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Вы можете попробовать это, он будет работать:
int x = Convert.ToInt32(TextBoxD1.Text);
Значение строки в переменной TextBoxD1.Text будут преобразованы в Int32 и будет храниться в x.
Хотя здесь уже много решений, описывающих int.Parse
, во всех ответах есть что-то важное. Как правило, строковые представления числовых значений различаются по культуре. Элементы числовых строк, таких как символы валюты, разделители групп (или тысяч) и десятичные разделители, различаются по культуре.
Если вы хотите создать надежный способ синтаксического анализа целой строки, важно учитывать информацию о культуре. Если вы этого не сделаете, будет использоваться current culture settings. Это может дать пользователю довольно неприятный сюрприз - или, что еще хуже, если вы разбираете форматы файлов. Если вы просто хотите, английский парсинг, то лучше просто сделать его явным, указав параметры культуры для использования:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Для получения более подробной информации читайте на CultureInfo, в частности NumberFormatInfo на MSDN.
Вы можете использовать либо,
int i = Convert.ToInt32(TextBoxD1.Text);
или
int i =int.Parse(TextBoxD1.Text);
Будьте осторожны при использовании Convert.ToInt32() на гольца! Он вернет код ASCII! Если вам может понадобиться извлечь только определенную позицию внутри строки.
String input = "123678";
int x = Convert.ToInt32(input[4]); // returns 55
int x = Convert.ToInt32(input[4].toString()); // returns 7
Вы можете написать свой собственный метод 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();
}
}
И везде, где в коде просто позвонить
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
В этом конкретном случае
int yourValue = TextBoxD1.Text.ParseInt();
Что такое 'int defaultValue = 0' for? где вы используете эту переменную? – Benj
@Benj Похоже на опечатку, я думаю, что она должна быть установлена, если 'TryParse' не работает – TheLethalCoder
@Benj Я исправил пример –
путь я всегда делаю это, как этот
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.
}
}
}
это, как я хотел бы сделать это, я надеюсь, что это помогает. (:
Преобразование string
к int
может быть сделано для: int
, Int32
, Int64
и других типов данных, отражающих типов целочисленных данных в .NET
Ниже пример показывает, что это преобразование:
Это шоу (для Информация) адаптер данных элемент инициализируется в целое значение. То же самое можно сделать непосредственно, как,
int xxiiqVal = Int32.Parse(strNabcd);
Ex.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii);
это может помочь вам; 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.");
}
}
}
//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;
}
По умолчанию в этом случае было бы неплохо. Если вообще требуется дефолт, я рекомендую вернуться 0. –
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
Если вы ищете долгий путь, просто создать один метод:
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;
}
Это будет делать
string x=TextBoxD1.Text;
int xi=Convert.ToInt32(x);
Или вы можете использовать
int xi=Int32.Parse(x);
вы можете сделать, как показано ниже, не TryParse или встроенных функций
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 - 1));
}
}
return x ;
}
МЕТОД 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
МЕТОД 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
МЕТОД 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");
}
Этот код работает для меня в Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Что делать, если целое число 64 бит или выглядит как «aslkdlksadjsd»? Это все еще в безопасности? – Jonny
@Jonny 'Int64.Parse()'. Если вход не является int, вы получите трассировку execple и стека с 'Int64.Parse' или логическое' False' с 'Int64.TryParse()', поэтому вам понадобится инструкция if, например 'if (Int32.TryParse (TextBoxD1.Text, out x)) {}'. – 2015-08-15 11:27:40
@Jonny: Я никогда не видел целое число, похожее на «aslkdlksadjsd» ... – Roberto