Câu trả lời:
Thử cái này:
int x = Int32.Parse(TextBoxD1.Text);
hoặc tốt hơn:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Ngoài ra, vì Int32.TryParse
trả về nên bool
bạn có thể sử dụng giá trị trả về của nó để đưa ra quyết định về kết quả của nỗ lực phân tích cú pháp:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Nếu bạn tò mò, sự khác biệt giữa Parse
và TryParse
được tóm tắt tốt nhất như thế này:
Phương thức TryPude giống như phương thức Parse, ngoại trừ phương thức TryPude không ném ngoại lệ nếu chuyển đổi không thành công. Nó loại bỏ nhu cầu sử dụng xử lý ngoại lệ để kiểm tra FormatException trong trường hợp s không hợp lệ và không thể được phân tích thành công. - MSDN
Int64.Parse()
. Nếu đầu vào không phải là int, thì bạn sẽ nhận được một lệnh thực thi và theo dõi ngăn xếp với Int64.Parse
, hoặc boolean False
với Int64.TryParse()
, vì vậy bạn cần một câu lệnh if, như thế nào if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Sử dụng điều này nếu bạn cảm thấy tự tin rằng nội dung của hộp văn bản là hợp lệ int
. Một lựa chọn an toàn hơn là
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Điều này sẽ cung cấp cho bạn một số giá trị mặc định bạn có thể sử dụng. Int32.TryParse
cũng trả về giá trị Boolean cho biết liệu nó có thể phân tích cú pháp hay không, do đó bạn thậm chí có thể sử dụng nó làm điều kiện của một if
câu lệnh.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Nó sẽ không ném nếu văn bản không phải là số.
int myInt = int.Parse(TextBoxD1.Text)
Một cách khác sẽ là:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
Sự khác biệt giữa hai là cái đầu tiên sẽ đưa ra một ngoại lệ nếu giá trị trong hộp văn bản của bạn không thể được chuyển đổi, trong khi cái thứ hai sẽ trả về sai.
code
int NumericJL; bool isNum = int.TryPude (nomeeJobBand, out NumericJL); if (isNum) // JL được giữ lại có thể chuyển sang int rồi đi trước để so sánh {if (! (NumericJL> = 6)) {// Nominate} //
Hãy cẩn thận khi sử dụng Convert.ToInt32 () trên char!
Nó sẽ trả về mã UTF-16 của nhân vật!
Nếu bạn chỉ truy cập chuỗi ở một vị trí nhất định bằng [i]
toán tử lập chỉ mục, nó sẽ trả về a char
chứ không phải a string
!
String input = "123678";
^
|
int indexOfSeven = 4;
int x = Convert.ToInt32(input[indexOfSeven]); // Returns 55
int x = Convert.ToInt32(input[indexOfSeven].toString()); // Returns 7
int x = 0;
int.TryParse(TextBoxD1.Text, out x);
Câu lệnh TryPude trả về một boolean đại diện cho việc phân tích cú pháp có thành công hay không. Nếu thành công, giá trị được phân tích cú pháp sẽ được lưu vào tham số thứ hai.
Xem Phương thức Int32.TryPude (Chuỗi, Int32) để biết thêm thông tin chi tiết.
Tận hưởng nó ...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Mặc dù đã có nhiều giải pháp ở đây mô tả int.Parse
, nhưng vẫn còn thiếu một điều quan trọng trong tất cả các câu trả lời. Thông thường, biểu diễn chuỗi của các giá trị số khác nhau theo văn hóa. Các yếu tố của chuỗi số như ký hiệu tiền tệ, dấu tách nhóm (hoặc hàng nghìn) và dấu tách thập phân đều thay đổi theo văn hóa.
Nếu bạn muốn tạo một cách mạnh mẽ để phân tích một chuỗi thành một số nguyên, thì điều quan trọng là phải tính đến thông tin văn hóa. Nếu bạn không, cài đặt văn hóa hiện tại sẽ được sử dụng. Điều đó có thể mang đến cho người dùng một bất ngờ khá khó chịu - hoặc thậm chí tệ hơn, nếu bạn phân tích định dạng tệp. Nếu bạn chỉ muốn phân tích tiếng Anh, tốt nhất chỉ cần làm cho nó rõ ràng, bằng cách chỉ định cài đặt văn hóa sẽ sử dụng:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Để biết thêm thông tin, hãy đọc trên CultureInfo, cụ thể là NumberFormatInfo trên MSDN.
Bạn có thể viết phương thức mở rộng của riêng bạn
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();
}
}
Và bất cứ nơi nào trong mã chỉ cần gọi
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
Trong trường hợp cụ thể này
int yourValue = TextBoxD1.Text.ParseInt();
StringExtensions
thay vì IntegerExtensions
, vì các phương thức mở rộng này hoạt động trên string
và không phải trên int
?
Như đã giải thích trong tài liệu TryPude , TryPude () trả về Boolean cho biết số đã hợp lệ được tìm thấy:
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
}
Bạn có thể sử dụng một trong hai
int i = Convert.ToInt32(TextBoxD1.Text);
hoặc là
int i = int.Parse(TextBoxD1.Text);
//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;
}
Bạn có thể chuyển đổi một chuỗi thành int trong C # bằng cách sử dụng:
Chức năng của lớp chuyển đổi tức là Convert.ToInt16()
, Convert.ToInt32()
, Convert.ToInt64()
hoặc bằng cách sử dụng Parse
và TryParse
chức năng. Ví dụ được đưa ra ở đây .
Bạn cũng có thể sử dụng một phương thức mở rộng , vì vậy nó sẽ dễ đọc hơn (mặc dù mọi người đã quen với các hàm Parse thông thường).
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);
}
}
Và sau đó bạn có thể gọi nó theo cách đó:
Nếu bạn chắc chắn rằng chuỗi của bạn là một số nguyên, như "50".
int num = TextBoxD1.Text.ParseToInt32();
Nếu bạn không chắc chắn và muốn ngăn chặn sự cố.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Để làm cho nó năng động hơn, vì vậy bạn cũng có thể phân tích cú pháp để nhân đôi, thả nổi, v.v., bạn có thể tạo một phần mở rộng chung.
Chuyển đổi string
để int
có thể được thực hiện cho: int
, Int32
, Int64
và các loại dữ liệu khác phản ánh các kiểu dữ liệu số nguyên trong .NET
Ví dụ dưới đây cho thấy chuyển đổi này:
Phần tử bộ điều hợp dữ liệu hiển thị (để biết thông tin) này được khởi tạo thành giá trị int. Điều tương tự có thể được thực hiện trực tiếp như,
int xxiiqVal = Int32.Parse(strNabcd);
Ví dụ.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Điều này sẽ làm
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Hoặc bạn có thể sử dụng
int xi = Int32.Parse(x);
Tham khảo Mạng nhà phát triển của Microsoft để biết thêm thông tin
Bạn có thể thực hiện như bên dưới mà không cần các hàm TryPude hoặc inbuilt:
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);
Bạn có thể chuyển đổi chuỗi thành một giá trị số nguyên với sự trợ giúp của phương thức phân tích cú pháp.
Ví dụ:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
Cách tôi luôn làm điều này là như thế này:
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.
}
}
}
Đây là cách tôi sẽ làm điều đó.
Nếu bạn đang tìm kiếm con đường dài, chỉ cần tạo một phương thức của bạn:
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;
}
PHƯƠNG PHÁP 1
int TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
Console.WriteLine("String not Convertable to an Integer");
}
PHƯƠNG PHÁP 2
int TheAnswer2 = 0;
try {
TheAnswer2 = Int32.Parse("42");
}
catch {
Console.WriteLine("String not Convertable to an Integer");
}
PHƯƠNG PHÁP 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");
}
Mã này hoạt động với tôi trong Visual Studio 2010:
int someValue = Convert.ToInt32(TextBoxD1.Text);
Điều này làm việc cho tôi:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Bạn có thể thử như sau. Nó sẽ hoạt động:
int x = Convert.ToInt32(TextBoxD1.Text);
Giá trị chuỗi trong biến TextBoxD1.Text sẽ được chuyển đổi thành Int32 và sẽ được lưu trữ trong x.
Trong C # v.7, bạn có thể sử dụng tham số nội tuyến, mà không cần khai báo biến bổ sung:
int.TryParse(TextBoxD1.Text, out int x);
out
Bây giờ không có tham số nào nản lòng trong C #?
Điều này có thể giúp bạn; 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.");
}
}
}