2008-09-26 13 views
5

जावा से माइग्रेट करने वाले किसी के लिए यह क्लासिक .NET प्रश्न होना चाहिए।.Net में तारों को टोकन करने के तरीके क्या हैं?

.NET के पास java.io.StreamTokenizer के बराबर प्रत्यक्ष प्रतीत नहीं होता है, हालांकि जेएलसीए एक समर्थन क्लास प्रदान करता है जो इसे लागू करने का प्रयास करता है। मेरा मानना ​​है कि जेएलसीए एक टोकनिज़र सपोर्ट क्लास भी प्रदान करता है जो एक स्ट्रिंग को स्रोत के रूप में लेता है, जिसे मैंने सोचा था कि स्ट्रीमटाइनाइज़र से लिया जाएगा, लेकिन ऐसा नहीं है।

पसंदीदा क्या स्ट्रीम और स्ट्रिंग दोनों को टोकननाइज़ करने का तरीका है? या कोई है? नेट में स्ट्रीम किए गए स्ट्रीम कैसे हैं? मैं लचीलापन चाहता हूं कि java.io.StreamTokenizer प्रदान करता है। कोई विचार?

+1

ओपी ने राय के अनुरोध के भाषा संकेतक का उपयोग करके सवाल का वाक्यांश दिया, लेकिन संदर्भ स्पष्ट है कि वह जावा के टोकनिंग एपीआई के लिए कार्यात्मक समकक्षों के रूप में राय की तलाश नहीं कर रहा था। सार था "जावा इस तरह से करता है। आप नेट में ऐसा कैसे करते हैं?" यह एक "आप क्या फ्रेमवर्क पसंद नहीं है?" सवाल। इस तरह, इसे फिर से खोलना चाहिए। –

उत्तर

6

.NET में कुछ भी नहीं है जो स्ट्रीमटोकेनाइज़र के बराबर है। सरल मामलों के लिए, आप स्ट्रिंग.Split() का उपयोग कर सकते हैं, लेकिन अधिक उन्नत टोकन पार्सिंग के लिए, आप शायद System.Text.RegularExpressions.Regex का उपयोग कर समाप्त कर देंगे।

+0

मैं विशेष रूप से उन सभी विभिन्न स्थानों को देख नहीं रहा था जो इस टोकनिज़र से उपयोग किए जाएंगे ... और आप सही हैं। अधिकांश स्ट्रिंग के लिए काफी सरल हैं। उपयोग करने के लिए सेट करें। धन्यवाद –

0

एक स्ट्रिंग टोकन करने के लिए, string.Split(...) का उपयोग करें।

1

Nextem पुस्तकालय में एक tokenizer नहीं है - तुम यहाँ एक उदाहरण देख सकते हैं: http://trac.assembla.com/nextem/browser/trunk/Examples/Parsing.n

यह एक Nemerle मैक्रो के रूप में लागू है, लेकिन आप इस बारे में और फिर आसानी से सी # से इसका इस्तेमाल कर सकते हैं।

+0

आप नेमेरले का भी उपयोग कर सकते हैं। पेग मैक्रो: https://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/peg-parser/। इसे यहां डाउनलोड किया जा सकता है: https://code.google.com/p/nemerle –

+0

यह एक उत्कृष्ट लाइब्रेरी की तरह दिखता है, लिंक के लिए थान। – Echilon

4

सिस्टम का उपयोग करें। स्ट्रिंग। अगर आपको विशिष्ट वर्णों के संग्रह पर आधारित स्ट्रिंग को विभाजित करने की आवश्यकता है।

सिस्टम का उपयोग करें .ext.RegularExpressions.RegEx.S मिलान पैटर्न पर पर विभाजित करने के लिए।

1

मुझे ऐसा नहीं लगता है, बहुत सरल टोकनिंग के लिए System.String.Split() पर एक नज़र डालें।

अधिक जटिल टोकनिंग सिस्टम द्वारा प्राप्त किया जा सकता है .ext.RegularExpressions.Regex।

1

जावा से सी # तक tuProlog पोर्ट करते समय हमें स्ट्रीमटोकनाइज़र समकक्ष खोजने की एक ही समस्या थी। हमने लिखने को समाप्त कर दिया है, जहां तक ​​मुझे पता है कि StreamTokenizer का सीधा रूपांतरण है जो इनपुट प्रयोजनों के लिए टेक्स्ट स्ट्रीमर को "स्ट्रीम" के रूप में लेता है। आपको download for tuProlog.NET 2.1 (LGPL- लाइसेंस प्राप्त) में कोड मिलेगा, इसलिए इसे पुनः उपयोग करने और अपनी आवश्यकताओं के अनुरूप अनुकूलित करने में संकोच न करें।

संबंधित मुद्दे

 संबंधित मुद्दे