我以前习惯用C语言编写代码,发现这个scanf
函数非常有用.不幸的是,C#中没有相应的东西.
我正在使用它来解析半结构化文本文件.
我在这里找到了一个有趣的scanf
实施例子.不幸的是,它看起来陈旧且不完整.
有谁知道scanf
C#实现?或者至少可以作为逆转的东西string.Format
?
由于文件是"半结构化的",你不能使用ReadLine()和TryParse()方法的组合,或者使用Regex类来解析你的数据?
如果正则表达式不适合你,我刚刚发布了sscanf()
.NET 的替代品.可以在http://www.blackbeltcoder.com/Articles/strings/a-sscanf-replacement-for-net查看和下载代码.
您可以直接从C运行时库中使用scanf,但如果您需要使用不同的参数计数运行它,则可能会很困难.我建议您为您执行正则表达式任务或在此描述该任务,也许还有其他方法.
我发现比使用C的sscanf或某人重写的部分更好的解决方案(无违法)
http://msdn.microsoft.com/zh-cn/library/63ew9az0.aspx 对此文章进行了介绍,它说明了如何使命名组从带图案的字符串中提取所需的数据。当心文章中的小错误以及下面的更好版本。(冒号不属于该组)
using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string url = "http://www.contoso.com:8080/letters/readme.html"; Regex r = new Regex(@"^(?\w+)://[^/]+?(? :\d+)?/",RegexOptions.None, TimeSpan.FromMilliseconds(150)); Match m = r.Match(url); if (m.Success) Console.WriteLine(r.Match(url).Result("${proto}:${port}")); } } // The example displays the following output: // http::8080