6

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

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

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

4

6 回答 6

6

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

于 2008-09-26T20:54:11.760 回答
4

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

使用 System.Text.RegularExpressions.RegEx.Split 根据匹配模式进行拆分。

于 2008-09-26T20:52:06.740 回答
1

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

它被实现为 Nemerle 宏,但您可以编写它,然后从 C# 轻松使用它。

于 2008-09-26T20:51:54.837 回答
1

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

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

于 2008-09-26T20:52:10.657 回答
1

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

于 2008-09-27T00:44:46.650 回答
0

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

于 2008-09-26T20:50:46.293 回答