2008-09-26 43 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許可)中找到代碼,以便隨時重複使用並根據您的需求進行調整。

相關問題