2008-09-26 3 views
5

Это должен быть классический .NET-вопрос для любого, кто переходит с Java.Каковы методы для токенизации строк в .Net?

.NET, похоже, не имеет прямого эквивалента java.io.StreamTokenizer, однако JLCA предоставляет SupportClass, который пытается его реализовать. Я считаю, что JLCA также предоставляет Tokenizer SupportClass, который берет строку в качестве источника, и я думал, что StreamTokenizer будет получен, но это не так.

Что такое Предпочтительный Способ Tokenize и Stream и String? или есть один? Как потоки, токенизированные в .Net? Я бы хотел иметь гибкость, предоставляемую java.io.StreamTokenizer. Есть предположения?

+1

В то время как ОП формулирует вопрос с использованием языка, указывающего на привлечение мнения, контекст кажется ясным, что он не искал мнений, а также функциональных эквивалентов API-интерфейсов Java-токенизации. Суть в том, что «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

Это выглядит как отличная библиотека, которая предназначена для связи. – 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

У нас была та же проблема с поиском эквивалента StreamTokenizer при переносе tuProlog с Java на C#. Мы закончили тем, что пишем, насколько я знаю, это прямое преобразование StreamTokenizer, которое принимает TextReader как «поток» для входных целей. Вы найдете код в download for tuProlog.NET 2.1 (LGPL-лицензированный), поэтому не стесняйтесь использовать его повторно и адаптировать к вашим потребностям.