出于兴趣,可以安全地假设如果Int32.TryParse(String, Int32)
失败,那么int参数将保持不变?例如,如果我希望我的整数具有默认值,哪个更明智?
int type;
if (!int.TryParse(someString, out type))
type = 0;
Run Code Online (Sandbox Code Playgroud)
要么
int type = 0;
int.TryParse(someString, out type);
Run Code Online (Sandbox Code Playgroud) 我正在尝试转换和指数数字1.11111117E + 9,这实际上是一个10位数字'1111111111'.当我尝试使用decimal.TryParse方法转换此指数时,它将最后3位数字设为零,并将数字设为" 111111000 ".任何10位数字都会发生这种情况.
decimal amount;
decimal.TryParse("1.11111117E+9", NumberStyles.Any, null, out amount);
Run Code Online (Sandbox Code Playgroud)
这很奇怪,但是我无法弄清楚这里有什么问题,有人能告诉我这有什么问题吗?
编辑: 对于误导性问题,我们深表歉意.正如亨里克在他的回答中提到的正是我所面对的.
float f = 1111111111;
string s = f.ToString();
decimal amount;
decimal.TryParse(s, NumberStyles.Any, null, out amount);
Run Code Online (Sandbox Code Playgroud)
这将永远返回1111111000?如何解决此问题以获得正确的值?从float数据类型更改为Double或Decimal是解决方案还是其他任何东西?
Int.TryParse
在不成功的解析中,我可以chagne 返回自定义数字(如-1)而不是零吗?
四处搜索后,我似乎无法找到为什么 C# 编译器抱怨本地变量dteDest 在行中未分配
if (dteSrc == dteDest) {
Run Code Online (Sandbox Code Playgroud)
如果我更换线路,错误就会消失
DateTime dteSrc, dteDest;
Run Code Online (Sandbox Code Playgroud)
和
DateTime dteSrc, dteDest = DateTime.MinValue;
Run Code Online (Sandbox Code Playgroud)
据我所知,如果 dteDest 没有被 DateTime.TryParse 初始化,它是一个 out 参数,那么代码永远不会到达比较行。
我的逻辑是:
void StrangeLogic(object srcData, object currentDataObj) {
DateTime dteSrc, dteDest;
bool booHaveNewDate = DateTime.TryParse(srcData.ToString(), out dteSrc);
bool booHaveOrigDate = (currentDataObj != null)
&& …
Run Code Online (Sandbox Code Playgroud) 在网站上我发现了try解析方法(如何检查C#中是否有空文本框)但我不知道如何使用它.
int outputValue=0;
bool isNumber=false;
isNumber=int.TryParse(textBox1.Text, out outputValue);
if(!isNumber)
{
MessageBox.Show("Type numbers in the textboxes");
}
else
{
// some code
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能为1 +多个文本框解决这个问题
我有这个代码:
string sPhone = "420777777777";
int rPhone;
bool valid = Int32.TryParse(sPhone, out rPhone); //false
if (!valid)
return "";
return String.Format("{0:+### ### ### ###}", rPhone);
Run Code Online (Sandbox Code Playgroud)
我想格式化电话号码,所以我将字符串转换为int,但值valid
总是为false.如何将此字符串转换为int?我也在尝试int.TryParse
或Convert.ToInt32
.没有任何效果.
DateTime.TryParse
找到空格时应该失败.
例子:
String Acceptable: "2015-01-01"
String Not Acceptable 1: " 2015-01-01"
String Not Acceptable 2: "2015-01-01 "
String Not Acceptable 3: "2015 -01-01 "
Run Code Online (Sandbox Code Playgroud)
我没有传递DateTimeStyles
参数.
if (!DateTime.TryParse(StringDate, out Datetimedate)){...}
Run Code Online (Sandbox Code Playgroud)
如果StringDate
有whitspace,解析不会失败.我希望它在有任何空格时失败.
我正在尝试解析一个包含一些DateTime线的巨大文件.由于某种原因,DateTime.TryParseExact仅在某些行上返回true而不在其他行上返回true.
我的DateParse.txt文件看起来像这样:
2015-02-27 01:01:30
2015-02-27 01:01:43
2015-02-27 01:01:53
2015-02-27 01:02:05
2015-02-27 01:02:15
2015-02-27 01:02:36
2015-02-27 01:02:51
2015-02-27 01:03:04
2015-02-27 01:03:21
2015-02-27 01:03:36
2015-02-27 01:03:46
2015-02-27 01:04:01
2015-02-27 01:04:13
2015-02-27 01:04:29
2015-02-27 01:04:40
string line;
DateTime DateTime;
using (StreamReader Date = new StreamReader("C:\\DateParse.txt")
while((line = Date.ReadLine()) != null)
if (DateTime.TryParseExact(line, "yyyy-mm-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime))
Console.WriteLine("True");
else
Console.WriteLine("False");
Run Code Online (Sandbox Code Playgroud)
我的输出是:
False
False
False
False
True
True
True
True
其余都是假的......
任何帮助解决这个问题将不胜感激.
在F#中,我可以这样解析一个浮点数:
let tryParseFloat s =
let ok,f = System.Double.TryParse s
if ok then f else nan
Run Code Online (Sandbox Code Playgroud)
然后
let parsed = tryParse "123.123"
match parsed with
| nan -> ignore parsed
| _ -> dostuff parsed
Run Code Online (Sandbox Code Playgroud)
如何使用int实现类似的功能?
我讨厌提出愚蠢的问题,但我已经通过MSDN文章几次并尝试了一小时的东西,但无论我尝试什么,我都无法使这种格式起作用.这是我正在尝试解析的内容:
星期四,6月22日
同
bool parsed = DateTime.TryParseExact("Thu, Jun 22", @"ddd, MMM dd", CultureInfo.Invariant, DateTimeStyles.None, out dateAndTime);
Run Code Online (Sandbox Code Playgroud)
使用格式:
ddd, MMM dd
Run Code Online (Sandbox Code Playgroud)
删除ddd,工作原因我很确定第一部分有什么东西,但我不确定是什么.我试过用''围绕逗号并用反斜杠逃避它,没有运气.