ما هي أفضل طريقة لتقسيم stringTokenizer تصل سطر من النص إلى متغيرات محددة مسبقا

StackOverflow https://stackoverflow.com/questions/236387

  •  04-07-2019
  •  | 
  •  

سؤال

وأنا لست متأكدا مما إذا كان العنوان واضح جدا، ولكن أساسا ما لدي للقراءة سطر من النص من ملف وتقسيمها إلى 8 متغيرات السلسلة مختلفة للقيام به. وكل سطر له نفس 8 قطع في نفس الترتيب (العنوان، المؤلف، السعر، الخ). وذلك لكل سطر من النص، وأريد أن ينتهي مع 8 سلاسل.

والمشكلة الأولى هي أن الحقول الماضيين في الخط قد أو قد لا تكون موجودة، لذلك يجب أن أفعل شيء مع stringTokenizer.hasMoreTokens، وإلا فإنه سوف يموت بقذارة عندما الحقول 7 و 8 ليست موجودة.

وأود مثالي للقيام بذلك في حين أن واحدا من أجل حلقة، ولكن لست متأكدا من كيفية معرفة أن حلقة ما ترتيب الحقول سيكون لذلك يمكن ملء كل 8 (أو 6) سلاسل بشكل صحيح . من فضلك قل لي هناك طريقة أفضل أن استخدام 8 متداخلة إذا كانت تصريحات!

وتحرير: الحل String.split يبدو بالتأكيد جزء منه، ولذا فإنني سوف تستخدم هذا بدلا من stringTokenizer. ومع ذلك، ما زلت غير متأكد ما هي أفضل طريقة لتغذية سلاسل الفردية في المنشئ. إن أفضل طريقة تكون لديك الطبقة تتوقع صفيف، وبعد ذلك فقط أن تفعل شيئا من هذا القبيل في المنشئ:

line[1] = isbn;
line[2] = title;
هل كانت مفيدة؟

المحلول

وأفضل طريقة هي عدم استخدام StringTokenizer على الإطلاق، ولكن استخدام سلسلة من <لأ href = "http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html #split (java.lang.String) "يختلط =" نوفولو noreferrer "> تقسيم الأسلوب. تقوم بإرجاع مجموعة من سلاسل، ويمكنك الحصول على طول من ذلك.

لكل سطر في الملف الخاص بك يمكنك القيام بما يلي:

String[] tokens = line.split("#");

وtokens سوف يكون الآن 6-8 سلاسل. استخدام tokens.length() لمعرفة كم، ثم خلق جوه الخاص بك من مجموعة.

نصائح أخرى

والتعبير منتظم هي الطريقة. يمكنك تحويل سلسلة الواردة إلى مجموعة من سلسلة باستخدام طريقة تقسيم

<وأ href = "http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String)" يختلط = "نوفولو noreferrer "> http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split (java.lang.String)

هل تعبير عادي مع مجموعات التقاط عمل لك؟ يمكنك جعل بالتأكيد أجزاء من التعبير اختياري.

وهناك خط سبيل المثال البيانات أو ثلاثة قد يكون مفيدا.

هل هذا CSV او ملف مماثل من قبل أي فرصة؟ إذا كان الأمر كذلك، هناك مكتبات لمساعدتك، على سبيل المثال أباتشي العموم CSV (وتصل إلى البدائل على صفحتهم أيضا). وسوف تحصل على سلسلة [] لكل خط في الملف. مجرد التحقق من حجم مجموعة لمعرفة ما موجودة الحقول الاختيارية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top