私は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メソッドは例外をスローしません。 sが無効で、正しく解析できない場合にFormatExceptionをテストするために例外処理を使用する必要がなくなります。 - _ 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メソッド(文字列、Int32)を参照してください。
楽しめ...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
文字に対してConvert.ToInt32()を使用するときは注意してください。
文字の UTF-16 Codeを返します。
[i]
インデックス演算子を使用して特定の位置でのみ文字列にアクセスすると、char
ではなくstring
が返されます。
String input = "123678";
int x = Convert.ToInt32(input[4]); // returns 55
int x = Convert.ToInt32(input[4].toString()); // returns 7
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 を参照してください。
あなた自身の拡張方法を書くことができます
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();
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);
C#では、文字列をintに変換できます。
Convertクラスの関数、すなわちConvert.ToInt16()
、Convert.ToInt32()
、Convert.ToInt64()
、またはParse
およびTryParse
関数を使用する。例を挙げます ここ 。
//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
からint
への変換は、int
、Int32
、Int64
、および.NETの整数データ型を反映するその他のデータ型に対して行うことができます。
以下の例は、この変換を示しています。
このshow(info用)データアダプタ要素はint値に初期化されています。同じことが直接できます。
int xxiiqVal = Int32.Parse(strNabcd);
例.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
これはするだろう
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 - (i+1)));
}
}
return x ;
}
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
拡張メソッド を使うこともできるので、読みやすくなります(誰でもすでに普通の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.
}
それをより動的にするために、doubleやfloatなどに解析することができます、それでは一般的な拡張をすることができます。
私はいつもこれを行う方法はこのようなものです
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 i = Convert.ToInt32(TextBoxD1.Text);
あなたはパースメソッドの助けを借りて文字列を整数値に変換することができます。
例えば:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
最も簡単な方法は、次のような拡張ヘルパーを使うことです。
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;
}
使い方はとても簡単です。
var x = "123".ToInt(); // 123
var y = "abc".ToInt(); // 0
string t = null;
var z = t.ToInt(-1); // -1
var w = "abc".ToNullableInt(); // null
あなたはこれを試すことができます、それは動作します:
int x = Convert.ToInt32(TextBoxD1.Text);
変数TextBoxD1.Textの文字列値はInt32に変換され、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");
}
長い道のりを探しているなら、ただ一つのメソッドを作成してください。
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;
}
このコードはVisual Studio 2010で私のために働きます:
int someValue = Convert.ToInt32(TextBoxD1.Text);