2008-09-26 42 views
5

这对于从Java迁移的任何人来说都是一个典型的.NET问题。在.Net中标记字符串的方法有哪些?

.NET似乎没有与java.io.StreamTokenizer直接等价的东西,但是JLCA提供了一个试图实现它的SupportClass。我相信JLCA还提供了一个Tokenizer SupportClass,它接受一个字符串作为源,我认为StreamTokenizer可以从其派生,但不是。

什么是 首选方式来Tokenize一个流和一个字符串?或者有一个? 在.Net中流如何标记化?我想要有java.io.StreamTokenizer提供的灵活性。有什么想法吗?

+1

虽然OP使用的措辞表示意见的征集的语言问题,上下文似乎很清楚,他不是在寻找的意见这么多的功能换算公式将Java的标记化的API。其实质是“Java是这样做的,你如何在.Net中做同样的事情?”这不是“你喜欢什么框架?”题。因此,它应该重新开放。 – 2014-02-17 16:33:48

回答

6

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

0

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

1

有一个在Nextem库一个标记 - 你可以在这里看到一个例子:http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n

它实现为Nemerle宏,但你可以这样写,然后从C#轻松地使用它。

+0

您也可以使用Nemerle.Peg宏:https://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser/。它可以在这里下载:https://code.google.com/p/nemerle – 2011-03-08 09:13:46

+0

这看起来像一个优秀的图书馆,链接的thans。 – Echilon 2012-05-18 14:24:49

4

使用System.String.Split如果您需要根据特定的字符集 分裂的字符串。

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

1

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

更复杂的标记化可以通过System.Text.RegularExpressions.Regex来实现。

1

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

相关问题