كيف يمكنك أن يتكرر خلال سلسلة متعدد الأسطر في روبي؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وسؤال بسيط جدا من أول مرة روبي مبرمج.

وكيف هل يتكرر خلال لوح من النص في روبي؟ في كل مرة يتم الوفاء سطر جديد، أريد أن إعادة بدء التشغيل والداخلية حلقة.

def parse(input)
    ...
end
هل كانت مفيدة؟

المحلول

سلسلة # each_line

str.each_line do |line|
    #do something with line
end

نصائح أخرى

وماذا قال Iraimbilanja.

وأو هل يمكن تقسيم السلسلة عند خطوط جديدة:

str.split(/\r?\n|\r/).each { |line| … }

وحذار أن each_line تحافظ على حرف سطر تغذية، في حين split يأكل منها.

لاحظ التعابير المنطقية كنت هنا سوف تأخذ الرعاية من جميع الأشكال إنهاء ثلاثة خط. String#each_line يفصل خطوط من sep_string حجة اختياري، التي افتراضات إلى $/، التي هي نفسها الافتراضي "\n" ببساطة.

وأخيرا، إذا كنت تريد أن تفعل تحليل سلسلة أكثر تعقيدا، تحقق من المدمج في الصف StringScanner.

ويمكنك أيضا القيام مع مع أي نمط:

str.scan(/\w+/) do |w|
  #do something
end
str.each_line.chomp do |line|
  # do something with a clean line without line feed characters
end

وأعتقد أن هذا يجب أن تأخذ الرعاية من أسطر جديدة.

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