什么是访问数组元素,没有抛出安全的方法IndexOutOfRangeException
,有点像TryParse
,TryRead
使用扩展方法或LINQ?
如何(尝试)以"DD/MM/YYYY"格式将单个字符串解析为DateTime?(VB.Net)
例如:我使用输入字符串"30/12/1999"(1999年12月30日),如何(尝试)将其解析为DateTime?
在解决这个问题时遇到一些麻烦,我想要按顺序在阵列中存储多达50部电影,并允许用户删除/搜索它们.
然而,它给我的错误说parseAttempt不存在,'string'不包含'TryParse'的定义...
这是我到目前为止所做的一切,如果它能让事情变得更清晰.- http://pastebin.com/V4aAAPf5
// Movie Title
parseAttempt = false;
while (parseAttempt == false)
{
Console.Write("Enter the movie title >");
vTemp = Console.ReadLine();
Attempt = string.TryParse(vTemp, out movie_title[current_movie]);
// Check data valid
// Check constraints
if (movie_title[current_movie] <= 0)
{
Console.Write("Movie title must be > 0");
parseAttempt = false;
}
}
Run Code Online (Sandbox Code Playgroud) 当日期字符串附加了星期几时,TryParse失败:
DateTime d;
string dateString = "Tuesday May 1, 2012 9:00 AM";
return DateTime.TryParse(dateString, out d); // returns false
Run Code Online (Sandbox Code Playgroud)
处理此问题的最佳方法是什么,以便我可以安全地确定它是日期,并将其转换为日期?
我不能做这个工作 - 总是返回False.
我在这里想念什么?
DateTimeOffset parsedDate;
if ( DateTimeOffset.TryParseExact("2012-10-31 23:59:59", "YYYY-MM-dd HH:mm:ss"
, CultureInfo.InvariantCulture
, DateTimeStyles.None, out parsedDate) == false)
{
throw new ArgumentException("dateToPare", dateToParse);
}
Run Code Online (Sandbox Code Playgroud) 我在这里使用Parse构建系统,使用Parse转换值(现在是3.5).
string myString = String.Empty;
double myValue = double.Parse(myString);
Run Code Online (Sandbox Code Playgroud)
抛出FormatException(我期望0.0).
如果我用2.0+重写它
string myString = String.Empty;
double myValue;
if (double.TryParse(myString, out myValue))
//do something
Run Code Online (Sandbox Code Playgroud)
我得到了想要的0.0,但不幸的是我失去了获得有意义的错误消息的可能性(在else树中).
为什么给我解析错误和TryParse我的期望值?有没有办法从TryParse中获取错误消息(时间不是问题)?
我不想那样解决它:
使用if ... then避免错误
myValue = myString.Length == 0 ? 0.0 : double.Parse(myString);
Run Code Online (Sandbox Code Playgroud)如果发生错误,则发出两次电话
if (!double.TryParse(myString, out myValue))
myValue = double.Parse(myString);
Run Code Online (Sandbox Code Playgroud)我有一个IP地址的字符串
clientId = "172.19.200.29:10308"
Run Code Online (Sandbox Code Playgroud)
我需要从中生成IPAddress对象.请执行以下操作
IPAddress clientIpAddr;
if (IPAddress.TryParse(clientId, out clientIpAddr)) //<-returns false
//clientIpAddr is null
Run Code Online (Sandbox Code Playgroud)
可能有什么不对
基本上我有一个文本文件,我需要读入值,以便程序可以操作它们.
我使用C++,我已经编写了工作代码来判断文件是否存在.
文本文件的格式如下:
1 7
8 10
20 6
3 14
...
Run Code Online (Sandbox Code Playgroud)
左边的值是X值,右边的值是Y值.(中间的空格是一个选项卡)如何提取此数据?说把它们传递给像这样的班级......
myVector(X,Y);
Run Code Online (Sandbox Code Playgroud)
另外,我想在我可以在类中使用它之前我必须将TryParse从字符串更改为int对吗?C++可以这样做吗?
谢谢!
在读取一些旧的Fortran数据时,我有一些常用的方法可以使用默认值覆盖进行解析.有时数据NaN (Not a number)
应该有数值.我预计TryParse会看到字符串"NaN"并且无法解析.但是,TryParse成功解析并放入NaN
数值.这是预期的行为吗?如果这是预期的,我还应该寻找其他任何"陷阱"值吗?
public static double GetDoubleFromString(string s, double defaultOnFailure = 0)
{
//Must be here due to TryParse returning NaN to d and result is set to true below
if (s.Contains("NaN"))
{
log.Warn(string.Format("String contained NaN, returning defaultOnFailure {0} string was {1}", defaultOnFailure, s));
return defaultOnFailure;
}
var d = defaultOnFailure;
if (!double.TryParse(s.Trim(), out d))
{
log.Warn(string.Format("Failed to parse double from string returning defaultOnFailure {0} string was {1}", defaultOnFailure, s));
}
return d;
}
Run Code Online (Sandbox Code Playgroud)
UPDATE …
代码:
string[] numbers = new string[2];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = Console.ReadLine();
if (int.TryParse(numbers[i], out int numberTry) && i == 0)
Console.WriteLine("That would be a number yes.");
else if (int.TryParse(numbers[i], out numberTry))
Console.WriteLine("Lovely work! That is indeed two numbers!");
else
{
Console.Clear();
Console.WriteLine("That's not a number. I am dissapointed.");
Console.ReadKey();
Environment.Exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题在于我不能将循环外的数字[]用作int,因为它从循环中的字符串转换为int.我需要能够使用方法作为int发送它来对数字[0]和数字[1]执行操作.提前致谢!