C#程序收到一个标有:
的字符串1.2345 V
我需要使用<比较这个值。或者>在'if'语句中。 如何将上面的字符串转换为整数? 我试着用:
int anInteger;
anInteger = Convert.ToInt32(textBox1.Text);
anInteger = int.Parse(textBox1.Text);
但它会抛出错误System.FormatException: incorrect format
。
答案 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);