Вопрос

Это, должно быть, классический вопрос .NET для всех, кто переходит с Java.

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

Что такое предпочтительный способ маркировать как поток, так и строку?или он вообще есть? Как потоки маркируются в .Net?Я хотел бы обладать гибкостью, которую предоставляет java.io.StreamTokenizer.Есть какие-нибудь мысли?

Это было полезно?

Решение

В .NET нет ничего, что было бы полностью эквивалентно StreamTokenizer.Для простых случаев вы можете использовать String .Split() , но для более сложного анализа токенов вы, вероятно, в конечном итоге будете использовать System.Text.Регулярные выражения.Регулярное выражение.

Другие советы

Используйте System.String.Разделить, если вам нужно разделить строку на основе набора определенных символов.

Используйте System.Text.RegularExpressions.Регулярное выражение.Split для разделения на основе совпадающих шаблонов.

В библиотеке Nextem есть токенизатор - вы можете увидеть пример здесь: http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n

Он реализован как макрос Nemerle, но вы можете написать это, а затем легко использовать на C #.

Я так не думаю, для очень простой токенизации взгляните на System.String .Split() .

Более сложная токенизация может быть достигнута с помощью System.Text.RegularExpressions.Regex.

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

Чтобы обозначить строку, используйте string.Split(...).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top