gpt4 book ai didi

c# - 在 C# 中将简单数字字符串转换为 Int 时引发格式异常

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:23 27 4
gpt4 key购买 nike

我在 VS2015 中转换字符串时出现奇怪的错误。当我使用 x 变量时,我没有收到任何错误。仅当我使用日期变量时才会引发异常。知道为什么吗???

谢谢

代码:

using System;
using System.Globalization;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string x = "9-1-2015";
string date = "‎9‎-‎1-‎2015";
List<string> dt = date.Split('-').ToList();
List<int> lis = new List<int>();
foreach (var item in dt)
{
lis.Add(int.Parse(item));
}
}
}
}

最佳答案

作为乔恩·斯基特 has pointed out

Your date variable value contains non-printable characters, copy and paste your string into http://csharpindepth.com/Articles/General/Unicode.aspx#explorer

因此您必须更改它的生成方式,或者,如果这不可能/不需要,请在将它们解析为 DateTime(这是您真正想要的)之前将其删除。

您可以使用这种方法:

var unicodeCategories = new[] { UnicodeCategory.DecimalDigitNumber, UnicodeCategory.DashPunctuation };
string cleanDate = string.Concat(date.Where(c => unicodeCategories.Contains(char.GetUnicodeCategory(c))));

现在您可以使用DateTime.TryParseExact:

DateTime dt;
if (DateTime.TryParseExact(cleanDate, "d-M-yyyy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt))
Console.WriteLine("Year:{0} Month:{1} Day:{2}", dt.Year, dt.Month, dt.Day);
else
Console.WriteLine("Could not be parsed to DateTime");

输出您的日期:Year:2015 Month:1 Day:9

关于c# - 在 C# 中将简单数字字符串转换为 Int 时引发格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com