StringをIntに変換するにはどうすればよいですか?
-
06-07-2019 - |
質問
TextBoxD1.Text
があり、それを 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メソッドはParseのようなものです メソッド、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 myInt = int.Parse(TextBoxD1.Text)
別の方法:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
2つの違いは、テキストボックスの値を変換できない場合、最初の例外は例外をスローしますが、2番目の例外はfalseを返すだけです。
文字列を解析する必要があり、また、それが本当に整数の形式であることを確認する必要があります。
最も簡単な方法は次のとおりです:
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 x = 0;
int.TryParse(TextBoxD1.Text, out x);
TryParseステートメントは、解析が成功したかどうかを表すブール値を返します。成功した場合、解析された値は2番目のパラメーターに格納されます。
Int32.TryParseメソッド(String、Int32) で詳細をご覧ください。
お楽しみください...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
int.Parse
を説明する多くのソリューションがすでにここにありますが、すべての答えに重要な欠落があります。通常、数値の文字列表現は文化によって異なります。通貨記号、グループ(または数千)区切り記号、小数点区切り記号などの数値文字列の要素はすべて、カルチャによって異なります。
文字列を整数に解析する堅牢な方法を作成する場合、カルチャ情報を考慮することが重要です。そうしないと、現在のカルチャ設定が使用されます。ファイル形式を解析している場合、それはユーザーにかなり厄介な驚きを与える可能性があります。英語の解析だけが必要な場合は、使用するカルチャ設定を指定して、単純に明示的にするのが最善です:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
詳細については、CultureInfo、特に MSDNのNumberFormatInfo 。
Convert.ToInt32()をcharで使用するときは注意してください!
キャラクターの UTF-16 コードを返します!
[i]
インデックス演算子を使用して特定の位置でのみ文字列にアクセスすると、 string
ではなく char
が返されます!
String input = "123678";
int x = Convert.ToInt32(input[4]); // returns 55
int x = Convert.ToInt32(input[4].toString()); // returns 7
独自の拡張メソッドを書くことができます そして、コードのどこでも呼び出すことができます
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
TryParseのドキュメントで説明されているように、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 i = Convert.ToInt32(TextBoxD1.Text);
または
int i =int.Parse(TextBoxD1.Text);
string
から int
への変換は、 int
、 Int32
、 Int64
および.NETの整数データ型を反映する他のデータ型
次の例は、この変換を示しています。
このshow(情報用)int値に初期化されたデータアダプタ要素。同じように直接行うことができます
int xxiiqVal = Int32.Parse(strNabcd);
例
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
//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;
}
これは
string x=TextBoxD1.Text;
int xi=Convert.ToInt32(x);
または使用できます
int xi=Int32.Parse(x);
次を使用して、C#で文字列をintに変換できます。
変換クラスの機能、つまり Convert.ToInt16()
、 Convert.ToInt32()
、 Convert.ToInt64()
または< code> Parse および TryParse
関数。例はこちらで提供されています。
拡張メソッドを使用することもできますので、より読みやすくなります(誰もが既に通常の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);
}
}
そして、そのように呼び出すことができます:
-
文字列が&quot; 50&quot;などの整数であることが確実な場合。
int num = TextBoxD1.Text.ParseToInt32();
-
不明で、クラッシュを防ぎたい場合。
int num; if (TextBoxD1.Text.TryParseToInt32(out num)) { //The parse was successful, the num has the parsed value. }
さらに動的にするために、double、floatなどに解析するために、汎用拡張を作成できます。
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 - (i+1)));
}
}
return x ;
}
int i = Convert.ToInt32(TextBoxD1.Text);
いつもこれを行う方法は次のとおりです
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.
}
}
}
これは私がそれを行う方法です、私はこれが役立つことを願っています。 (:
解析メソッドを使用して、文字列を整数値に変換できます。
例:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
これを試すことができます、それは動作します:
int x = Convert.ToInt32(TextBoxD1.Text);
変数TextBoxD1.Textの文字列値はInt32に変換され、xに格納されます。
長い道を探しているなら、ただ一つのメソッドを作成してください:
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;
}
方法1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
METHOD 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
METHOD 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);
これはあなたを助けるかもしれません; 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.");
}
}
}