Tôi gặp phải lỗi lạ khi chuyển đổi chuỗi trong VS2015. Khi tôi sử dụng biến x tôi không gặp bất kỳ lỗi nào. Ngoại lệ chỉ được đưa ra khi tôi sử dụng biến ngày. Bạn có biết tại sao không? ? ?
Cảm ơn
Mã số:
using System;
sử dụng System.Globalization;
không gian tên ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
chuỗi x = “9-1-2015”;
chuỗi ngày = "9-1-2015";
Danh sách dt = date.Split('-').ToList();
Danh sách lis = Danh sách mới();
foreach (var mục trong dt)
{
lis.Add(int.Parse(item));
}
}
}
}
như Jon Skeeter đã chỉ ra
Giá trị biến ngày của bạn chứa các ký tự không in được, hãy sao chép và dán chuỗi của bạn vào http://csharpindeep.com/Articles/General/Unicode.aspx#explorer
Vì vậy, bạn phải thay đổi cách tạo ra nó hoặc nếu điều này là không thể/không cần thiết, hãy phân tích chúng thành DateTime
(đó là điều bạn thực sự muốn) trước khi gỡ bỏ nó.
Bạn có thể sử dụng phương pháp này:
var unicodeCategories = new[] { UnicodeCategory.DecimalDigitNumber, UnicodeCategory.DashPunctuation };
chuỗi cleanDate = string.Concat(date.Where(c => unicodeCategories.Contains(char.GetUnicodeCategory(c))));
Bây giờ bạn có thể sử dụngDateTime.TryParseExact
:
Ngày Giờ dt;
if (DateTime.TryParseExact(cleanDate, "dM-yyyy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt))
Console.WriteLine("Năm:{0} Tháng:{1} Ngày:{2}", dt.Year, dt.Month, dt.Day);
khác
Console.WriteLine("Không thể phân tích thành DateTime");
xuất ra của bạnngày
:Năm:2015 Tháng:1 Ngày:9
Tôi là một lập trình viên xuất sắc, rất giỏi!