【发布时间】:2016-01-21 14:15:23
【问题描述】:
假设你有一个作为长字符串读入的文本文件:
123 123 123
123 123 123
// Just a comment
123 123 123
123 123 123
# Just a comment
123 123 123
您通常将其拆分为类似这样的行,(Unity3D 中的示例),
List<string> lines = new List<string>(
controlFile.text.Split(new string[] { "\r","\n" },
StringSplitOptions.RemoveEmptyEntries));
.NET 提供了不可思议的字符串魔法,例如格式化等等。
我想知道,是否有一些可用的魔法可以轻松删除 cmets?
注意 - 当然可以使用正则表达式等来做到这一点。正如 SonerGönül 指出的那样,它可以通过 .Where 和 .StartsWith 有效地完成
我的问题是,在 .NET 字符串魔术的世界中是否有一些工具,专门“理解”并帮助 cmets。
即使专家的回答是“绝对不”,这也是一个有用的答案。
【问题讨论】:
-
问题是每种格式对 cmets 使用不同的分隔符。因此,需要对该方法进行参数化以接受您的注释分隔符类型。在您的示例中,您显示了两个。还有更多的可能性吗?还是只有那两个?
-
注释行有哪些可能性?仅以
//或#开头?如果是这样,您可以使用类似.Where(line => !line.StartsWith("//") || !line.StartsWith("#"))的东西吗? -
另外一个重要的问题是你需要支持inline cmets,还是我们可以假设注释在行首,整行都可以去掉?
-
lines.Where(l => !l.StartsWith("//")) -
你是在问解析成行,还是在你有一堆行后删除 cmets? (或两者兼而有之?)