Regex.Replace 函数和读取文本文件

Regex.Replace function and reading a text file

StreamReader ReadFile;
            ReadFile = File.OpenText("..\..\WeatherForecasts.txt");
            string line = ReadFile.ReadLine();
            if (String.IsNullOrEmpty(line) == false)
            {
                txtCity.Text = Regex.Replace(ReadFile.ReadLine(), "City: ", String.Empty);
                dateTimePicker1.Value = DateTime.Parse(Regex.Replace(ReadFile.ReadLine(), "Date: ", String.Empty));
                MinT.Value = decimal.Parse(Regex.Replace(ReadFile.ReadLine(), "Minimum temperature: ", String.Empty));
                MaxT.Value = decimal.Parse(Regex.Replace(ReadFile.ReadLine(), "Maximum temperature: ", String.Empty));
                Prec.Value = decimal.Parse(Regex.Replace(ReadFile.ReadLine(), "Precipitation: ", String.Empty));
                Humidity.Value = decimal.Parse(Regex.Replace(ReadFile.ReadLine(), "Humidity: ", String.Empty));
                WindSpeed.Value = decimal.Parse(Regex.Replace(ReadFile.ReadLine(), "Wind Speed: ", String.Empty));
            }


            ReadFile.Close();

实际上这是有效的,但如果任何数据存储在 WeatherForecasts.txt

我收到此错误消息:

System.FormatException: 'The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.'

所以我改成了

                    Regex.Replace(ReadFile.ReadLine(), "City: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Date: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Minimum temperature: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Maximum temperature: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Precipitation: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Humidity: ", String.Empty);
                    Regex.Replace(ReadFile.ReadLine(), "Wind Speed: ", String.Empty);

我得到了一个不同的错误

System.ArgumentNullException: 'Value cannot be null.
Parameter name: input'

如果我不存储数据,它工作得很好。

这就是现在 WeatherForecasts.txt 中存储的数据

City: dddd
Date: 5/27/2020 12:00:00 AM
Minimum temperature: 1
Maximum temperature: 1
Precipitation: -1
Humidity: -2
Wind Speed: 1

抱歉,我不知道你需要什么,所以如果你需要任何其他信息,请告诉我。

您遇到的异常与日期解析有关。默认情况下,Date.Parse 使用计算机本地设置来解析日期,但它可能与您提供的日期(美国区域格式)不匹配。 使用具有以下格式的 Date.ParseExact

dateTimePicker1.Value = DateTime.ParseExact(Regex.Replace(ReadFile.ReadLine(), "Date: ", String.Empty),"M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);