/ / रूबी मुद्रण लाइन संख्या [डुप्लिकेट] - रूबी, रेखा, सफेद जगह

रूबी प्रिंटिंग लाइन नंबर [डुप्लिकेट] - रूबी, लाइन, व्हाइटस्पेस

मैं लाइन के लिए एक लाइन लाइन की जांच करने की कोशिश कर रहा हूँसफेद जगह शुरू करना मैं चाहता हूं कि सभी लाइनें अंतरिक्ष या टैब दोनों से शुरू हों। यदि ऐसी रेखा है जो अंतरिक्ष और एथर्स लाइन से शुरू होती है जो फ़ाइल में टैब से शुरू होती है तो नीचे दिया गया कोड चेतावनी प्रिंट करने जा रहा है, लेकिन इसके शीर्ष पर मैं 2 लाइनों को प्रिंट करना चाहता हूं जो अंतरिक्ष से शुरू होता है और जो एक से शुरू होता है बस उपयोगकर्ता को दिखाने के लिए टैब, और मैं लाइन नंबर और सामान कैसे प्राप्त करें इस पर अटक गया। मदद!! मेरा कोड अब तक ऐसा दिखता है।

    file= File.read("file_tobe_checked")
tabs = spaces = false
file.each do |line|

line =~ /^t/ and tabs = true
line =~ /^ / and spaces = true

if spaces and tabs
STDERR <<  "The white spaces at the beginning of each line are not consistent.n"

end
end

उत्तर:

जवाब के लिए 0 № 1

रूबी में कई विशेष चर हैं, जिनमें से एक है $. जो वर्तमान में पढ़ी गई रेखा की संख्या है।

आप आईओ का भी उपयोग कर सकते हैं lineno तरीका।

IO.lineno

(from ruby core)
------------------------------------------------------------------------------
ios.lineno    -> integer

------------------------------------------------------------------------------

Returns the current line number in ios.  The stream must be opened for
reading. lineno counts the number of times #gets is called rather than the
number of newlines encountered.  The two values will differ if #gets is called
with a separator other than newline.

Methods that use $/ like #each, #lines and #readline will also increment
lineno.

See also the $. variable.

f = File.new("testfile")
f.lineno   #=> 0
f.gets     #=> "This is line onen"
f.lineno   #=> 1
f.gets     #=> "This is line twon"
f.lineno   #=> 2

जवाब के लिए 0 № 2

आप पहली पंक्ति संख्या रख सकते हैं जो प्रत्येक के साथ आपकी भविष्यवाणी के रूप में शुरू होती है यदि ऐसी कोई पंक्ति है:

file= File.read("file_tobe_checked")
tabs = spaces = nil
line_no = 1
file.each do |line|
tabs ||= line_no if line =~ /^t/
spaces ||= line_no if line =~ /^ /
line_no += 1

if spaces && tabs
STDERR <<  "The white spaces at the beginning of each line are not consistent.n"
STDERR << "Tab line: #{tabs}"
STDERR << "Space line: #{spaces}"
end
end