我想拆分字符串s1 = 6/28/2010 4:46:36 PM
和s2 = 16:46:36.5013946
。
并将它们连接到新的s3 = 20010062816463650
。但是当我分裂s2时。我的正则表达式不起作用。我现在暂停了。
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConAppTest
{
class Program
{
static void Main(string[] args)
{
string s1 = ""; // date
string s2 = ""; // time
Console.WriteLine("{0}", DateTime.Now);
s1 = DateTime.Now.ToString();
Console.WriteLine("{0}", DateTime.Now.TimeOfDay);
s2 = DateTime.Now.TimeOfDay.ToString();
Regex regex1 = new Regex(@" |:|/"); //6/28/2010 2:19:21 PM
char[] separators1 = { ' ', '/' };
foreach (string sub1 in regex1.Split(s1))
{
Console.WriteLine("Word1: {0}", sub1);
}
Regex regex2 = new Regex(@":|."); //14:19:21.8771215
char[] separators2 = { ':', '.' };
foreach (string sub2 in regex2.Split(s2))
{
Console.WriteLine("Word2: {0}", sub2);
}
}
}
}
//output
//6/28/2010 4:46:36 PM
//16:46:36.5013946
//Word1: 6
//Word1: 28
//Word1: 2010
//Word1: 4
//Word1: 46
//Word1: 36
//Word1: PM
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
//Word2:
答案 0 :(得分:4)
为什么你要使用RegEx
呢?
使用DateTime.TryParse
或DateTime.Parse
将输入字符串解析为DateTime
对象(如果需要完全解析,还有ParseExact
和TryParseExact
采用格式字符串)。
然后,您可以将DateTime.ToString
与custom format string一起使用,直接从DateTime
个对象输出您想要的输出。
DateTime.ToString("yyyyMMddHHmmssff");
答案 1 :(得分:3)
在正则表达式中使用时,点(.
)匹配任何字符。你需要用反斜杠来逃避它:
Regex regex2 = new Regex(@":|\.");
请注意,这与字符串文字中执行的转义完全分开 - 它是正则表达式语言的一部分,而不是C#语言。
(我也同意Oded的建议,无论如何,使用正则表达式可能不是最合适的解决方案。)