【问题标题】:What are the methods for tokenizing strings in .Net?在.Net中标记字符串的方法是什么?
【发布时间】:2010-09-13 14:27:17
【问题描述】:

对于从 Java 迁移的任何人来说,这一定是一个经典的 .NET 问题。

.NET 似乎没有直接等效于 java.io.StreamTokenizer,但是 JLCA 提供了一个 SupportClass 来尝试实现它。我相信 JLCA 还提供了一个以字符串为源的 Tokenizer SupportClass,我认为 StreamTokenizer 会派生自它,但不是。

首选 标记流和字符串的方法是什么?还是有一个? .Net 中的流是如何标记的?我想拥有 java.io.StreamTokenizer 提供的灵活性。有什么想法吗?

【问题讨论】:

  • 虽然 OP 使用表示征求意见的语言来表达问题,但上下文似乎很清楚,他并不是在寻找意见,而是在寻找 Java 标记化 API 的功能等价物。本质是“Java 是这样做的。你如何在 .Net 中做同样的事情?”这不是“你喜欢什么框架?”题。因此,它应该重新打开。

标签: c# java .net migration


【解决方案1】:

.NET 中没有任何东西完全等同于 StreamTokenizer。对于简单的情况,您可以使用 String.Split(),但对于更高级的令牌解析,您可能最终会使用 System.Text.RegularExpressions.Regex

【讨论】:

  • 我并没有特别关注这个 Tokenizer 将被使用的所有不同的地方......你是对的。大多数都足够简单,可以使用 String.Split。谢谢
【解决方案2】:

在将 tuProlog 从 Java 移植到 C# 时,我们遇到了相同的问题,即找到等效的 StreamTokenizer。据我所知,我们最终编写了 StreamTokenizer 的直接转换,它将 TextReader 作为输入目的的“流”。您可以在 download for tuProlog.NET 2.1(LGPL 许可)中找到代码,因此请随意重用并根据您的需要进行调整。

【讨论】:

    【解决方案3】:

    我不这么认为,对于非常简单的标记化,请查看 System.String.Split()。

    更复杂的分词可以通过 System.Text.RegularExpressions.Regex 来实现。

    【讨论】:

      【解决方案4】:

      如果需要基于集合拆分字符串,请使用 System.String.Split 特定字符。

      使用 System.Text.RegularExpressions.RegEx.Split 进行基于拆分 关于匹配模式。

      【讨论】:

        【解决方案5】:

        Nextem 库中有一个标记器——您可以在此处查看示例:http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n

        它是作为 Nemerle 宏实现的,但您可以编写它,然后在 C# 中轻松使用它。

        【讨论】:

        【解决方案6】:

        要标记字符串,请使用string.Split(...)

        【讨论】:

          猜你喜欢
          • 2014-03-01
          • 2012-05-03
          • 2014-08-13
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          • 1970-01-01
          • 2017-01-21
          • 1970-01-01
          相关资源
          最近更新 更多