سؤال

يجب أن يكون هذا سؤال .NET كلاسيكيًا لأي شخص يقوم بالترحيل من Java.

لا يبدو أن .NET لديه مكافئ مباشر لـ java.io.StreamTokenizer، إلا أن JLCA توفر فئة دعم تحاول تنفيذه.أعتقد أن JLCA توفر أيضًا Tokenizer SupportClass الذي يأخذ سلسلة كمصدر، والذي اعتقدت أنه سيتم اشتقاق StreamTokenizer منه، ولكنه ليس كذلك.

ما هو يفضل طريقة لترميز كل من الدفق والسلسلة؟أم أن هناك واحد؟ كيف يتم ترميز التدفقات في .Net؟أرغب في الحصول على المرونة التي يوفرها java.io.StreamTokenizer.أي أفكار؟

هل كانت مفيدة؟

المحلول

لا يوجد أي شيء في .NET يعادل تمامًا StreamTokenizer.في الحالات البسيطة، يمكنك استخدام String.Split()، ولكن بالنسبة لتحليل الرمز المميز الأكثر تقدمًا، فمن المحتمل أن ينتهي بك الأمر باستخدام System.Text.RegularExpressions.Regex.

نصائح أخرى

استخدم system.string.split إذا كنت بحاجة إلى تقسيم سلسلة بناءً على مجموعة من الأحرف المحددة.

استخدم system.text.regularexpressions.regex.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