web-dev-qa-db-ja.com

StringをIntに変換する方法

私はTextBoxD1.Textを持っていて、それをintに変換してデータベースに保存したいのです。

これどうやってするの?

535
turki2009

これを試して:

int x = Int32.Parse(TextBoxD1.Text);

またはもっと良い:

int x = 0;

Int32.TryParse(TextBoxD1.Text, out x);

また、 Int32.TryParseboolを返すので、その戻り値を使って構文解析の結果について決定を下すことができます。

int x = 0;

if (Int32.TryParse(TextBoxD1.Text, out x))
{
    // you know that the parsing attempt
    // was successful
}

あなたが興味を持っているならば、ParseTryParseの違いはこのように最もよくまとめられます:

TryParseメソッドはParseメソッドに似ていますが、変換が失敗した場合にTryParseメソッドは例外をスローしません。 sが無効で、正しく解析できない場合にFormatExceptionをテストするために例外処理を使用する必要がなくなります。 - _ msdn _

897
Andrew Hare
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(..);
}
45
Babak Naffas
int.TryParse()

テキストが数値でない場合はスローされません。

31
n8wrl
int myInt = int.Parse(TextBoxD1.Text)

別の方法は次のとおりです。

bool isConvertible = false;
int myInt = 0;

isConvertible = int.TryParse(TextBoxD1.Text, out myInt);

この2つの違いは、テキストボックス内の値を変換できない場合、最初のメソッドは例外をスローするのに対し、2番目のメソッドはfalseを返す点です。

17
Andre Kraemer

文字列を解析する必要があります。また、それが本当に整数の形式であることを確認する必要もあります。

最も簡単な方法はこれです:

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
}
15
Jacob
int x = 0;
int.TryParse(TextBoxD1.Text, out x);

TryParseステートメントは、解析が成功したかどうかを表すブール値を返します。成功した場合、解析された値は2番目のパラメータに格納されます。

詳細については、Int32.TryParseメソッド(文字列、Int32)を参照してください。

10
jorelli

楽しめ...

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
8
Mong Zhu

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 を参照してください。

8
atlaste

あなた自身の拡張方法を書くことができます

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();
6
Miroslav Holec

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
}
6
JeffH

どちらでも使えます、

int i = Convert.ToInt32(TextBoxD1.Text);

または

int i =int.Parse(TextBoxD1.Text);
5
Deadlock

C#では、文字列をintに変換できます。

Convertクラスの関数、すなわちConvert.ToInt16()Convert.ToInt32()Convert.ToInt64()、またはParseおよびTryParse関数を使用する。例を挙げます ここ

4
Atif
//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;
}
4
Jsprings

stringからintへの変換は、intInt32Int64、および.NETの整数データ型を反映するその他のデータ型に対して行うことができます。

以下の例は、この変換を示しています。

このshow(info用)データアダプタ要素はint値に初期化されています。同じことが直接できます。

int xxiiqVal = Int32.Parse(strNabcd);

例.

string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );

このデモを見るためのリンク

4
Edwin b

これはするだろう

string x=TextBoxD1.Text;
int xi=Convert.ToInt32(x);

またはあなたが使用することができます

int xi=Int32.Parse(x);

詳細については Microsoft Developer Networkを参照してください

4
Tony Stark

あなたは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 ;
}
3
lazydeveloper
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
3
Mohammad Rahman

拡張メソッド を使うこともできるので、読みやすくなります(誰でもすでに普通の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);
    }
}

そして、そのようにそれを呼ぶことができます:

  1. あなたの文字列が "50"のような整数であることが確実であれば。

    int num = TextBoxD1.Text.ParseToInt32();
    
  2. 確信がなく、クラッシュを防ぎたい場合。

    int num;
    if (TextBoxD1.Text.TryParseToInt32(out num))
    {
        //The parse was successful, the num has the parsed value.
    }
    

それをより動的にするために、doubleやfloatなどに解析することができます、それでは一般的な拡張をすることができます。

3
Misha Zaslavsky

私はいつもこれを行う方法はこのようなものです

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.
        }
    }
}

これが私のやり方です、これが役に立つことを願っています。 (:

2
Isaac Newton
int i = Convert.ToInt32(TextBoxD1.Text);
2
deepu

あなたはパースメソッドの助けを借りて文字列を整数値に変換することができます。

例えば:

int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
1
Codemaker

最も簡単な方法は、次のような拡張ヘルパーを使うことです。

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
0
S.Serpooshan

あなたはこれを試すことができます、それは動作します:

int x = Convert.ToInt32(TextBoxD1.Text);

変数TextBoxD1.Textの文字列値はInt32に変換され、xに格納されます。

0

方法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");
}
0
Bill Moore

長い道のりを探しているなら、ただ一つのメソッドを作成してください。

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;
    }
0
jul taps

このコードはVisual Studio 2010で私のために働きます:

int someValue = Convert.ToInt32(TextBoxD1.Text);
0
Sarib Shamim