将文本转换为整数以在C#中进行比较

时间:2017-09-15 13:28:01

标签: c# textbox type-conversion integer

C#程序收到一个标有:

的字符串
1.2345 V

我需要使用<比较这个值。或者>在'if'语句中。 如何将上面的字符串转换为整数? 我试着用:

int anInteger;
anInteger = Convert.ToInt32(textBox1.Text);
anInteger = int.Parse(textBox1.Text);

但它会抛出错误System.FormatException: incorrect format

4 个答案:

答案 0 :(得分:1)

如果您坚持整数1.2345中的 dot ,则忽略,最终结果为12345 ):

  // Any digits (including, say, Persian ones) are OK  
  int anInteger = (textBox1.Text
    .Where(c => char.IsDigit(c))
    .Aggregate(0, (s, a) => s * 10 + (int)char.GetNumericValue(a));   

或者

  // Only '0'..'9' digits supported
  int anInteger = (textBox1.Text
    .Where(c => c >= '0' && c <= '9')
    .Aggregate(0, (s, a) => s * 10 + a - '0');   

答案 1 :(得分:0)

您必须在结尾删除cols = ['Name', 'Unit_y', 'Attribute', 'Date_y'] df1 = df1.merge(df2, how='left', on='Name')[cols]\ .rename(columns=lambda x: x.split('_')[0]).fillna(df1) df1 Name Unit Attribute Date 0 a F 1 2019 1 b G 2 2020 2 c C 3 2016 3 d D 4 2017 4 e H 5 2021 并使用V / decimal.Parse

TryParse

在我的国家/地区使用decimal d; bool validFormat = decimal.TryParse(textBox1.Text.TrimEnd('V', ' '), out d); 作为小数,,作为组分隔符,这会产生.

如果您想要忽略字符串中不是数字的任何内容:

12345

答案 2 :(得分:0)

请注意,取决于您当前的文化设置,您可以获得不同的结果。

以下代码使用de-DE文化设置运行

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");

string str = "1.23";
decimal val = decimal.Parse(str);
val.Dump(); // output 123

string str2 = "1,23";
decimal val2 = decimal.Parse(str2);
val2.Dump(); // output 1,23

以下代码使用en-US文化设置运行

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

string str = "1.23";
decimal val = decimal.Parse(str);
val.Dump(); // output 1.23

string str2 = "1,23";
decimal val2 = decimal.Parse(str2);
val2.Dump(); // output 123

请使用LINQPad运行该代码。

答案 3 :(得分:0)

你可以尝试 -

 decimal dec=2;
 string str = "3.23456";
 dec = Convert.ToDecimal(str.ToString());
 int a = Convert.ToInt32(dec);