当前位置:  开发笔记 > 编程语言 > 正文

寻找C#相当于scanf

如何解决《寻找C#相当于scanf》经验,为你挑选了4个好方法。

我以前习惯用C语言编写代码,发现这个scanf函数非常有用.不幸的是,C#中没有相应的东西.

我正在使用它来解析半结构化文本文件.

我在这里找到了一个有趣的scanf实施例子.不幸的是,它看起来陈旧且不完整.

有谁知道scanfC#实现?或者至少可以作为逆转的东西string.Format



1> Mitch Wheat..:

由于文件是"半结构化的",你不能使用ReadLine()和TryParse()方法的组合,或者使用Regex类来解析你的数据?


正则表达并不是那么糟糕.下载其中一个免费工具(如Expresso)和正则表达式更容易创建和使用.

2> Jonathan Woo..:

如果正则表达式不适合你,我刚刚发布了sscanf().NET 的替代品.可以在http://www.blackbeltcoder.com/Articles/strings/a-sscanf-replacement-for-net查看和下载代码.



3> okutane..:

您可以直接从C运行时库中使用scanf,但如果您需要使用不同的参数计数运行它,则可能会很困难.我建议您为您执行正则表达式任务或在此描述该任务,也许还有其他方法.



4> jurik..:

我发现比使用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

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有