.Net中标记字符串的方法有哪些?

时间:2020-03-06 14:48:30  来源:igfitidea点击:

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

.NET似乎没有与java.io.StreamTokenizer的直接等效,但是JLCA提供了一个尝试实现它的SupportClass。我相信JLCA还提供了一个将String作为源的Tokenizer SupportClass,我认为StreamTokenizer会从中派生,但不是。

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

解决方案

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

Nextem库中有一个分词器-我们可以在此处看到一个示例:http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n

它被实现为Nemerle宏,但是我们可以编写该宏,然后从Ceasily中使用它。

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

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

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

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

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

将tuProlog从Java移植到C#时,我们也遇到了寻找StreamTokenizer等效项的问题。据我所知,我们最终完成了StreamTokenizer的直接转换,该转换将TextReader作为输入的"流"。我们可以在下载的tuProlog.NET 2.1(LGPL许可)中找到代码,因此可以随时重用并使其适应需求。