【问题标题】:Regex.Replace function and reading a text file [duplicate]Regex.Replace 函数并读取文本文件[重复]
【发布时间】:2020-05-27 12:17:13
【问题描述】:
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

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

【问题讨论】:

    标签: c# winforms datetime datetime-parsing


    【解决方案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);
    

    【讨论】:

    • 但必须从 txt 文件中读取。这就是为什么我使用'ReadFile.ReadLine();'
    • 我真的很抱歉,但我仍然收到此错误消息:
    • System.FormatException: '字符串未被识别为有效的日期时间。'
    • 你能发布你在 Regex.Replace 之后得到的文本的值吗?
    • 如果我不存储数据,我就得不到任何价值。
    猜你喜欢
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2017-06-24
    相关资源
    最近更新 更多