在.Net中对字符串进行标记的方法有哪些?
题
对于从Java迁移的任何人来说,这必须是一个经典的.NET问题。
.NET似乎没有直接等效于java.io.StreamTokenizer,但是JLCA提供了一个试图实现它的SupportClass。我相信JLCA还提供了一个Tokenizer SupportClass,它以String为源,我认为StreamTokenizer是派生出来的,但不是。
对流和字符串进行令牌化的首选方法是什么?或者有一个?如何在.Net中标记流?我想拥有java.io.StreamTokenizer提供的灵活性。有什么想法吗?
解决方案
.NET中没有任何东西完全等同于StreamTokenizer。对于简单的情况,您可以使用String.Split(),但是对于更高级的令牌解析,您可能最终会使用 System.Text.RegularExpressions.Regex 。
其他提示
如果需要根据集合拆分字符串,请使用System.String.Split 具体人物。
使用System.Text.RegularExpressions.RegEx.Split进行拆分 关于匹配模式。
Nextem库中有一个标记器 - 你可以在这里看到一个例子: http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n
它是作为Nemerle宏实现的,但您可以编写它,然后轻松地从C#中使用它。
我不这么认为,因为非常简单的标记化可以看看System.String.Split()。
System.Text.RegularExpressions.Regex。
可以实现更复杂的标记化在将tuProlog从Java移植到C#时,我们遇到了同样的问题,即找到StreamTokenizer。我们最后写了一篇据我所知的StreamTokenizer的直接转换,它将TextReader作为“流”。用于输入目的。您可以在下载tuProlog.NET 2.1 (LGPL许可)中找到代码,所以请随意重用并使其适应您的需求。
要标记字符串,请使用 string.Split(...)
。