C# 在第n次出现char时拆分字符串

C# 在第n次出现char时拆分字符串,c#,split,C#,Split,我有很多这样的字符串: 29/10/2018 14:50:09402325 671 我想拆分这些字符串,使其如下所示: 29/10/2018 14:50:09402325 671 2018年10月29日14:50 09402325671 然后将这些数据添加到数据集中,并在以后进行分析 我遇到的问题是,如果我使用此代码: string[] words = emaildata.Split(':'); 它将它们分开两次;我只想在第二次出现时拆分一次: 我该怎么做 您可以反转字符串,然后调用常规

我有很多这样的字符串:

29/10/2018 14:50:09402325 671
我想拆分这些字符串,使其如下所示:

29/10/2018 14:50:09402325 671
2018年10月29日14:50

09402325671

然后将这些数据添加到数据集中,并在以后进行分析

我遇到的问题是,如果我使用此代码:

 string[] words = emaildata.Split(':');
它将它们分开两次;我只想在第二次出现时拆分一次:


我该怎么做

您可以反转字符串,然后调用常规拆分方法以请求单个结果,然后反转两个结果

您可以使用
LastIndexOf()
和一些后续的
Substring()
调用:

string input = "29/10/2018 14:50:09402325 671";

int index = input.LastIndexOf(':');

string firstPart = input.Substring(0, index);
string secondPart = input.Substring(index + 1);
拨弄

然而,另一件事要问你自己,你是否需要把它变得比需要的更复杂。看起来在第二个
实例之前,这些数据的长度总是相同的,对吗?为什么不在已知索引处拆分(即不首先查找
):

使用正则表达式:


使用后接
Substring()
s必须确定第二个索引很好的答案,非常有效的一点是日期时间总是相同的长度,非常感谢。
using System;
using System.Text.RegularExpressions;

public class Program  {
    public static void Main() {
        string input = "29/10/2018 14:50:09402325 671";
        Regex rx = new Regex(@"(.*):([^:]+)",
            RegexOptions.Compiled | RegexOptions.IgnoreCase);

        MatchCollection matches = rx.Matches(input);
        if ( matches.Count >= 1 ) {
            var m = matches[0].Groups;
            Console.WriteLine(m[1]);
            Console.WriteLine(m[2]);        
        }
    }
}