有没有办法让C#TryParse()函数更……严格一点?现在,如果你传入一个包含数字、正确的小数点和千位分隔符的字符串,它通常似乎只是接受它们,即使格式没有意义,例如:123''345'678我正在寻找一种方法,如果数字格式不正确,TryParse不会成功。所以,我在苏黎世,如果我这样做:decimalexampleNumber=1234567.89m;Trace.WriteLine(string.Format("Value{0}getsformattedas:\"{1:N}\"",exampleNumber,exampleNumber));...然后,根据我的区域设置,我得到这个..
假设我有以下类(class):classCow{publicstaticboolTryParse(strings,outCowcow){...}}是否可以通过反射调用TryParse?我知道基础知识:vartype=typeof(Cow);vartryParse=type.GetMethod("TryParse");vartoParse="...";varresult=(bool)tryParse.Invoke(null,/*whataretheargs?*/); 最佳答案 你可以这样做:staticvoidMain(string[
C#.NET4.5,Windows10,我有以下枚举:privateenumEnums{A=1,B=2,C=3}这个程序的行为非常奇怪:publicstaticvoidMain(){Enumse;if(Enum.TryParse("12",oute)){Console.WriteLine("Parsed{0}",e);}else{Console.Write("Notparsed");}Console.ReadLine();}我希望TryParse方法的结果为假,但令我惊讶的是控制台显示“Parsed12”。在Watch窗口中甚至显示值为“12”,并且是Enums类型!对于我尝试过的任何
我有一个用户输入,它可以包含范围从3.06或3,06的浮点值我们所处的文化是法语,因此当用户输入3.06并且我对该值运行float.tryParse时,它不会转换为3.06到新变量(类型float)中//inputUsedAmount.ValuefromUIis:3.06floatusedAmount=0.0f;float.TryParse(inputUsedAmount.Value,outusedAmount);//returnsfalse我可以简单地从“.”替换从用户界面输入的金额。到“,”,但是有没有一种优雅/更好的方式通过Culture来做到这一点?谢谢
我正在使用Datetime.TryParse方法来检查有效的日期时间。输入日期字符串可以是任何字符串数据。但返回false作为无效的指定日期。DateTimefromDateValue;if(DateTime.TryParse("15/07/2012",outfromDateValue)){//doforvaliddate}else{//doforin-validdate}编辑:我错过了。我需要检查时间为“15/07/201212:00:00”的有效日期。欢迎提出任何建议。 最佳答案 您可以使用TryParseExact方法允许您传
如果我运行这个C#代码intrealInt=3;stringfoo="bar";Int32.TryParse(foo,outrealInt);Console.WriteLine(realInt);Console.Read();我得到0。我想知道为什么!因为我找不到任何原因。这迫使我为每次解析创建临时变量。所以,请!宇宙大码农,赐教! 最佳答案 是“out”,不是“ref”。在方法内部,它必须分配它(无需先阅读它)以满足“out”的含义。实际上,“out”是一个语言问题(不是框架问题)——因此托管C++实现可能会忽略这一点……但遵循它
我有一个使用点(".")作为小数点分隔符的源XML,我在使用逗号(",")作为小数点分隔符的系统上解析它。因此,值0.7被Double.TryParse或Double.Parse解析为7000000。正确解析的选项有哪些?其中之一是使用String.Replace('.',',')用逗号替换源中的点,但我认为我不太喜欢这个。 最佳答案 XML标准明确规定了日期和数字等格式。这有助于确保XML独立于平台且可互操作。看看使用XmlConvert用于xml数据。doublevalue=XmlConvert.ToDouble(stringV
谁能解释为什么下面的代码片段返回true?根据The"d"customformatspecifier的文档,"个位数的日期格式不带前导零。"那么,当我给它一个带前导零的个位数日时,为什么TryParseExact不会失败?DateTimex;returnDateTime.TryParseExact("01/01/2001",@"d\/MM\/yyyy",null,System.Globalization.DateTimeStyles.None,outx);更新我想也许我本来就不清楚。我真正想要了解的是:为什么TryParseExact接受一些不完全匹配的值?从我看到的所有文档中,'d'
使用以下任一方法从对象中提取替身的优缺点是什么?除了个人喜好之外,我正在寻求反馈的问题还包括易于调试、性能、可维护性等。publicstaticdoubleGetDouble(objectinput,doubledefaultVal){try{returnConvert.ToDouble(input);}catch{returndefaultVal;}}publicstaticdoubleGetDouble(objectinput,doubledefaultVal){doublereturnVal;if(double.TryParse(input.ToString(),outretur
我正在开发一种工具,我需要将字符串值转换为其正确的对象类型。例如。将类似"2008-11-20T16:33:21Z"的字符串转换为DateTime值。"42"和"42.42"等数值必须分别转换为Int32值和Double值.检测字符串是整数还是数字的最佳和最有效的方法是什么?Int32.TryParse或Double.TryParse是可行的方法吗? 最佳答案 Int.TryParse和Double.TryParse具有实际返回数字的好处。类似Regex.IsMatch("^\d+$")的缺点是您仍然需要再次解析字符串以获取值。