Каковы методы для токенизации строк в .Net? - PullRequest
6 голосов
/ 27 сентября 2008

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

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

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

Ответы [ 6 ]

6 голосов
/ 27 сентября 2008

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

4 голосов
/ 27 сентября 2008

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

Используйте System.Text.RegularExpressions.RegEx.Split для разделения на основе на соответствие шаблонам.

1 голос
/ 27 сентября 2008

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

1 голос
/ 27 сентября 2008

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

С помощью System.Text.RegularExpressions.Regex можно выполнить более сложные токенизации.

1 голос
/ 27 сентября 2008

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

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

0 голосов
/ 27 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...