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]);
}
}
}