C# 每次解析字符串

C# 每次解析字符串,c#,asp.net,string,C#,Asp.net,String,我需要获取“07:30 am”格式的时间(不区分大小写)。我正在读一个文件,它的格式是“07:30am”。最终,我将从中构建一个日期时间,所以我只需要在am/pm部分之前用一个空格将其返回 我可以使用以下方法检测a或p的发生: if(startString.IndexOfAny("ap".ToCharArray()) != -1) { } 最好的方法是什么?我猜我最终会得到两个可以用空格连接的字符串?Split可以与上面的代码片段一起使用来实现这一点吗 更新: 我需要在DateTime中的分

我需要获取“07:30 am”格式的时间(不区分大小写)。我正在读一个文件,它的格式是“07:30am”。最终,我将从中构建一个日期时间,所以我只需要在am/pm部分之前用一个空格将其返回

我可以使用以下方法检测a或p的发生:

if(startString.IndexOfAny("ap".ToCharArray()) != -1)
{

}
最好的方法是什么?我猜我最终会得到两个可以用空格连接的字符串?Split可以与上面的代码片段一起使用来实现这一点吗

更新:

我需要在DateTime中的分钟和AM/PM之间留一个空格,我不想使用正则表达式。到目前为止,我在这里试过的东西都没有告诉我

我必须处理的实际输入是以下格式:

记录日期:“2012年4月30日”

实时:“05:30am”


我需要从这些对象中创建一个新的DateTime对象,在am/pm部分之前有一个空格。

您有两个简单的选择:

  • 使用正则表达式修复格式设置:


    string newTime=Regex.Replace(startString,@)(?您有两个简单的选择:

  • 使用正则表达式修复格式设置:


    string newTime=Regex.Replace(startString,@)(?为什么不为此使用正则表达式?()对于正则表达式向导(我不是)来说应该是一件容易的事情。

    对于正则表达式向导(我不是)来说,为什么不为此使用正则表达式应该是一件容易的事情

    第二种方法没有这样的签名-似乎我通过了一个提供者;哪一个对我们英语来说是正确的?第二个参数也有错误:“需要标识符”@IrishChieftain
    CultureInfo
    实现了
    IFormatProvider
    ,所以类似于
    new CultureInfo(“en-US”)
    应该可以做到这一点。根据@phoog的评论添加了CultureInfo,修复了
    \d
    。我似乎总是忘记C#string-escaping。谢谢RIchard,我选择了选项2:string startString=“04/28/2012”+“”“+”07:30am;“仍然出现运行时错误”字符串未被识别为有效日期时间对于该格式的完整日期/时间,您需要第二个参数为“MM/dd/yyyy hh:mmtt”。第二个方法没有这样的签名-似乎我传递了一个提供程序;对于美国英语,哪一个是正确的?第二个参数也有错误:“预期标识符”?@IrishChieftain
    CultureInfo
    实现了
    IFormatProvider
    ,因此类似于
    newcultureinfo(“en-US”)
    应该可以做到这一点。根据@phoog的评论添加了CultureInfo,修复了
    \d
    。我似乎总是忘记C#string-escaping。谢谢RIchard,我选择了选项2:string startString=“04/28/2012”+“”“+”07:30am;“仍然出现运行时错误”字符串未被识别为有效日期时间对于该格式的完整日期/时间,您需要第二个参数为“MM/dd/yyyy hh:mmtt”。