আমি কীভাবে স্ট্রিংকে ইনটে রূপান্তর করতে পারি?


638

আমার একটি আছে TextBoxD1.Textএবং আমি intএটি একটি ডেটাবেসে সঞ্চয় করতে একটিতে রূপান্তর করতে চাই ।

কিভাবে আমি এটি করতে পারব?

উত্তর:


1038

এটা চেষ্টা কর:

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সেরা ভালো সংকলিত আপ:

ট্রাইপার্স পদ্ধতিটি পার্স পদ্ধতির মতো, ট্রাইপার্স পদ্ধতি ব্যতীত যদি রূপান্তর ব্যর্থ হয় তবে ব্যতিক্রমগুলি ছুঁড়ে না ফেলে। এটি অবৈধ এবং সফলভাবে পার্স করা যায় না এমন ইভেন্টে ফর্ম্যাটএক্সসেপশন পরীক্ষা করার জন্য ব্যতিক্রম হ্যান্ডলিংয়ের ব্যবহারের প্রয়োজনকে দূর করে। - এমএসডিএন


3
পূর্ণসংখ্যা যদি 64 বিট হয়, বা "aslkdlksadjsd" এর মত দেখাচ্ছে? এটি কি এখনও নিরাপদ?
জনি

6
@Jonny Int64.Parse()। ইনপুট অ int- এ হয়, তাহলে আপনি একটি আপত্তি এবং একটি স্ট্যাক ট্রেস পাবেন Int64.Parse, বা বুলিয়ান Falseসঙ্গে Int64.TryParse(), তাই আপনি একটি বিবৃতি যদি মত প্রয়োজন চাই, if (Int32.TryParse(TextBoxD1.Text, out x)) {}

1
আপনি যদি ট্রিপ পার্সে পরিবর্তনশীলটি আরম্ভ করার চেষ্টা করতে পারেন তবে এটির সফলতা শর্তের মধ্যেই যদি ব্যবহার করা হয়। উদাহরণস্বরূপ: Int32.TryParse (TextBoxD1.Text, int x))
কেবল

5
সম্ভবত এটি অন্য সবার কাছে অবিশ্বাস্যরূপে সুস্পষ্ট, তবে কাস্টিং সফল হলে নুবিশ লোকদের জন্য 'আউট এক্স' কী করবে তা এক্স এর মান সেট করে string অর্থাত্ এই ক্ষেত্রে, x = 0 স্ট্রিংয়ের কোনও অ-পূর্ণসংখ্যার অক্ষর থাকলে, বা x = স্ট্রিং-হিসাবে-পূর্ণসংখ্যার মান অন্যথায়। ঝরঝরে জিনিস হ'ল এটি একটি সংক্ষিপ্ত প্রকাশ যা আপনাকে জানায় যে castালাই সফল হয় কিনা এবং এবং একই সময়ে variালাই পূর্ণসংখ্যাকে একটি পরিবর্তনশীল হিসাবে সংরক্ষণ করে। স্পষ্টতই আপনি প্রায়শই 'অন্যথায় {// স্ট্রিংকে বিশ্লেষণের সাথে উপরের রেখাটি চালিয়ে যেতে চাইবেন, সুতরাং এই পরিস্থিতিটি সামলানোর জন্য কিছু কোড}'
উইল ক্রক্সফোর্ড

@ রবার্তো ঠিক আছে, তবে এটি সম্ভব যে ব্যবহারকারী (ভুলক্রমে বা ইচ্ছাকৃতভাবে) একটি পাঠ্যবক্সের ভিতরে "aslkdlksadjsd" মান টাইপ করুন! আমাদের প্রোগ্রাম ক্রাশ উচিত?
এস.স্পার্পোশন 1'18

55
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(..);
}

-1 আরই। "এটি আপনাকে ব্যবহার করতে পারে এমন কিছু ডিফল্ট মান সরবরাহ করবে।" যদি আপনার ভ্যাল বলতে বোঝায়, সমস্যাটি আশা করুন: "এই প্যারামিটারটি অবিচ্ছিন্নভাবে পাস করা হয়েছে; ফলস্বরূপ সরবরাহ করা কোনও মানই ওভাররাইট করা হবে।" [সূত্র। ডকস.মাইক্রোসফট.এইন
ডটনেট

6
10 বছর আগে আমি ক্ষমা চেয়েছি।
বাবাক নাফাস

37
int.TryParse()

পাঠ্যটি সংখ্যায় না থাকলে এটি ছোঁড়াবে না।


এটি অন্য দুটি তুলনায় ভাল। ব্যবহারকারীর ইনপুটটি ভুল ফর্ম্যাট হতে পারে। এটি অন্যের মতো ব্যতিক্রম হ্যান্ডলিংয়ের চেয়ে বেশি দক্ষ।
চাচা

যথাযথভাবে। রূপান্তর ব্যর্থ হলে এটি মিথ্যা প্রত্যাবর্তন করে।
n8wrl

21
int myInt = int.Parse(TextBoxD1.Text)

আর একটি উপায় হবে:

bool isConvertible = false;
int myInt = 0;

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

উভয়ের মধ্যে পার্থক্য হ'ল যদি আপনার পাঠ্যবক্সের মান রূপান্তর না করা যায় তবে প্রথমটি ব্যতিক্রম করবে throw


উপরের বুলিয়ান ভেরিয়েবলটি খুব কার্যকর আমরা কোমাইক্রসন-এর জন্য রূপান্তরিত মানটি ব্যবহার করছি, যদি একটি ধারাটিতে বলি। code ইন্ট নিউমেরিকজেএল; bool isNum = int.TryParse (nomeeJobBand, NumericJL আউট); যদি (isNum) // পুনরুদ্ধার হওয়া জেএল পূর্বে প্রবেশ করতে সক্ষম হয় তবে তুলনার জন্য এগিয়ে যান {যদি (! (সংখ্যাযুক্তজেএল> = 6)) N // মনোনীত করুন else // অন্য {}}
বায়াম্যাক্স

16

আপনার স্ট্রিংটি পার্স করতে হবে এবং আপনার এটিও নিশ্চিত হওয়া দরকার যে এটি সত্যিকারের কোনও পূর্ণসংখ্যার বিন্যাসে রয়েছে।

সবচেয়ে সহজ উপায় হ'ল:

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
}

14

একটি চরে কনভার্ট.টোইন্ট 32 () ব্যবহার করার সময় সতর্ক থাকুন!
এটি অক্ষরের UTF-16 কোডটি ফিরিয়ে দেবে !

আপনি যদি কেবল [i]ইনডেক্সিং অপারেটরটি ব্যবহার করে কোনও নির্দিষ্ট অবস্থানে স্ট্রিংটি অ্যাক্সেস করেন তবে এটি একটি charএবং না ফেরত আসবে string!

String input = "123678";
                    ^
                    |
int indexOfSeven =  4;

int x = Convert.ToInt32(input[indexOfSeven]);             // Returns 55

int x = Convert.ToInt32(input[indexOfSeven].toString());  // Returns 7

11
int x = 0;
int.TryParse(TextBoxD1.Text, out x);

ট্রাই পার্সে বিবৃতি পার্সে সফল হয়েছে কিনা তা উপস্থাপন করে একটি বুলিয়ান দেয় boo যদি এটি সফল হয় তবে পার্সড মানটি দ্বিতীয় প্যারামিটারে সঞ্চিত হয়।

দেখুন Int32.TryParse পদ্ধতি (স্ট্রিং, Int32) আরো বিস্তারিত তথ্যের জন্য।



10

যদিও এখানে ইতিমধ্যে অনেকগুলি সমাধান রয়েছে যা বর্ণনা করে int.Parse রয়েছে, সেখানে সমস্ত উত্তরের মধ্যে একটি গুরুত্বপূর্ণ বিষয় রয়েছে। সাধারণত, সংখ্যার মানগুলির স্ট্রিং উপস্থাপনা সংস্কৃতি অনুসারে পৃথক হয়। সংখ্যার স্ট্রিংয়ের উপাদান যেমন মুদ্রা চিহ্ন, গোষ্ঠী (বা হাজার) বিভাজক এবং দশমিক বিভাজক সব সংস্কৃতি অনুসারে পরিবর্তিত হয়।

আপনি যদি কোনও পূর্ণসংখ্যার সাথে স্ট্রিংকে পার্স করার একটি শক্তিশালী উপায় তৈরি করতে চান তবে সংস্কৃতি সম্পর্কিত তথ্যগুলি বিবেচনায় নেওয়া গুরুত্বপূর্ণ important আপনি যদি না করেন তবে বর্তমান সংস্কৃতি সেটিংস ব্যবহার করা হবে। যদি আপনি ফাইল ফর্ম্যাটগুলি পার্স করে থাকেন তবে এটি কোনও ব্যবহারকারীকে একটি সুন্দর বাজে চমকে দিতে পারে - বা আরও খারাপ। আপনি যদি কেবল ইংলিশ পার্সিং চান তবে সংস্কৃতি সেটিংস ব্যবহারের জন্য নির্দিষ্ট করে কেবল স্পষ্ট করে বলা ভাল:

var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
    // use result...
}

আরও তথ্যের জন্য, সংস্কৃতিআইফোনটি পড়ুন, বিশেষত এমএসডিএন- তে নাম্বার ফর্ম্যাটআইনফো


8

আপনি নিজের এক্সটেনশন পদ্ধতি লিখতে পারেন

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();

ক্লাসটির StringExtensionsপরিবর্তে কল করা উচিত নয় IntegerExtensions, যেহেতু এই এক্সটেনশন পদ্ধতিগুলি একটিতে stringএবং নাও কাজ করে int?
শিব

7

ট্রাইপার্স ডকুমেন্টেশনে বর্ণিত হিসাবে , ট্রাই পার্সে () একটি বুলিয়ান দেয় যা ইঙ্গিত করে যে একটি বৈধ নম্বর পাওয়া গেছে:

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
}



5
//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
--প্রজিথ সারাভানান

5

আপনি স্ট্রিংকে সি # তে ইনট এ রূপান্তর করতে পারেন:

ধর্মান্তরিত ক্লাসের কার্যাবলী অর্থাত Convert.ToInt16(), Convert.ToInt32(), Convert.ToInt64()বা ব্যবহার করার মাধ্যমে Parseএবং TryParseকার্যাবলী। উদাহরণ এখানে দেওয়া হয়


এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন ২r

4

আপনি একটি এক্সটেনশন পদ্ধতিও ব্যবহার করতে পারেন , সুতরাং এটি আরও পঠনযোগ্য হবে (যদিও প্রত্যেকে নিয়মিত পার্স ফাংশনগুলির জন্য ইতিমধ্যে অভ্যস্ত)।

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

এটিকে আরও গতিশীল করার জন্য, আপনি এটি দ্বিগুণ, ভাসা ইত্যাদি ইত্যাদির বিশ্লেষণ করতে পারেন, আপনি জেনেরিক এক্সটেনশন করতে পারেন।


4

এর রূপান্তর stringকরার intজন্য করা যেতে পারে: int, Int32, Int64এবং অন্যান্য ধরনের তথ্য পূর্ণসংখ্যা ধরনের তথ্য অনুধ্যায়ী .NET মধ্যে

নীচে উদাহরণস্বরূপ এই রূপান্তরটি দেখায়:

এই শো (তথ্যের জন্য) ডেটা অ্যাডাপ্টার উপাদানটি ইনট মান থেকে শুরু করে। একই মত সরাসরি করা যেতে পারে,

int xxiiqVal = Int32.Parse(strNabcd);

যাত্রা।

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

এই ডেমো দেখতে লিঙ্ক


4

এটি করবে

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

অথবা আপনি ব্যবহার করতে পারেন

int xi = Int32.Parse(x);

আরও তথ্যের জন্য মাইক্রোসফ্ট বিকাশকারী নেটওয়ার্ক পড়ুন


এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন

4

আপনি ট্রাইপার্স বা ইনবিল্ট ফাংশন ছাড়াই নীচের মতো করতে পারেন:

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

রূপান্তরকরণকারী ("1234") 10000 দেয় ...... আপনি যদি অন্য কারও উত্তর অনুলিপি করতে চলেছেন তবে কমপক্ষে পুরো জিনিসটি অনুলিপি করুন
SerenityNow

আমাকে নিজের সাথে তুলনা করবেন না ... পরিবর্তে আপডেট সমাধান যুক্ত করুন .. lol
lazydeveloper

@ সেরেনিটি এখন আপনি এখনই পরীক্ষা করতে পারেন t এটি টাইপ ভুল ছিল।
অলস গতিপথ

1
আপনার আইডি উল্লেখ করে, একটি অলস- উন্নয়নকারী এই জাতীয় পদ্ধতি তৈরি করবে না! ; ডি ভাল
এস.স্পার্পোশন 1'18


2

পার্স পদ্ধতির সাহায্যে আপনি স্ট্রিংকে একটি পূর্ণসংখ্যার মানতে রূপান্তর করতে পারেন।

উদাহরণ:

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

এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন

2

আমি যেভাবে সর্বদা এটি করি তা হ'ল:

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

এইভাবে আমি এটি করব।


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

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

আপনি নিম্নলিখিত চেষ্টা করতে পারেন। এটি কাজ করবে:

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

ভেরিয়েবলের টেক্সটবক্সডি 1 -র স্ট্রিং মানটি আন্তঃ 32 এ রূপান্তরিত হবে এবং এক্স-এ সংরক্ষণ করা হবে।



-3

এটি আপনাকে সাহায্য করতে পারে; ডি

{
    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.");
        }
    }
}

একটি ব্যাখ্যা ক্রম হবে।
পিটার মর্টেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.