我有一段多种格式的文本,我想尝试创建一个包含所有这些格式的方法.我知道在哪里可以分割这些线,但是,我不确定如何定义它.
文本的一个例子:
.0 index .0.label unicode"Area".0.value unicode"6WAY DB".1 index .1.label unicode"SubStation".1.value unicode"E782DB257".2(etc ...)
我想在".0",".1"等上拆分这些行,这样我的列表将如下所示:
.0 index
.0.label unicode"Area"
.0.value unicode"6WAY DB"
.1 index
.1.label unicode"SubStation"
这将使数据更易于操作.但是,由于值的变化取决于行,我不能简单地将该值作为常规字符串.相反,我在考虑陈述更像是
string Split = "." + n.IsInt();
Run Code Online (Sandbox Code Playgroud)
或类似的东西.但是,我找不到任何有用的东西.
如果我理解你,你可以使用正则表达式替换来执行以下操作
var input = ".0 index .0.label unicode \"Area\" .0.value unicode \"6WAY DB\" .1 index .1.label unicode \"SubStation\" .1.value unicode \"E782DB257\" .2 (etc...)";
var result = Regex.Replace(input, @"\.\d", $"{Environment.NewLine}$&");
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
或实际拆分
var lines = result.Split(new[]{Environment.NewLine},StringSplitOptions.None);
foreach (var line in lines)
Console.WriteLine(line);
Run Code Online (Sandbox Code Playgroud)
产量
.0 index
.0.label unicode "Area"
.0.value unicode "6WAY DB"
.1 index
.1.label unicode "SubStation"
.1.value unicode "E782DB257"
.2 (etc...)
Run Code Online (Sandbox Code Playgroud)
说明
. 匹配任何字符(行终止符除外)
\d匹配一个数字(等于[0-9])$& 替换原始匹配