class String
def stripped!
gsub!(/^[[:space:]]*|[[:space:]]*$/, '')
end
def lstripped!
sub!(/^[[:space:]]*/, '')
end
def rstripped!
sub!(/[[:space:]]*$/, '')
end
def stripped_all!
gsub!(/^[[:cntrl:]\x20]*|[[:cntrl:]\x20]*$/, '')
end
def lstripped_all!
sub!(/^[[:cntrl:]\x20]*/, '')
end
def rstripped_all!
sub!(/[[:cntrl:]\x20]*$/, '')
end
def delete_cntrl!
return self unless self =~ /[[:cntrl:]]/
gsub!(/[[:cntrl:]]/, '')
end
end
p "".strip!
p "".stripped!
p "abc".strip!
p "abc".stripped!
p "abc\000".strip!
p "abc\000".stripped_all!
p "abc\000\001".strip!
p "abc\000\001".stripped_all!
puts
p "".gsub!(/[[:cntrl:]]/, '')
p "a".gsub!(/[[:cntrl:]]/, '')
p "".delete_cntrl!
p "a".delete_cntrl!
text = <<-EOS
\r \x00 this is an example \t\x11 text caf\303\251 \x20\x20\x20\x20 \r \f
\011 \x10 \x07 \t\r\v\f abc \v\000 def \000 \x20\x20 \r \v \r
EOS
puts "\n\n\e[1mOriginal text:\e[m\n"
text.each_line { |l| p l }
puts
puts "\n\e[1mString#stripped!\e[m\n"
text.each_line do |l|
l.stripped!
p l
end
puts "\n\e[1mString#lstripped!\e[m\n"
text.each_line do |l|
l.lstripped!
p l
end
puts "\n\e[1mString#rstripped!\e[m\n"
text.each_line do |l|
l.rstripped!
p l
end
puts "\n\e[1mString#stripped_all!\e[m\n"
text.each_line do |l|
l.stripped_all!
p l
end
puts "\n\e[1mString#lstripped_all!\e[m\n"
text.each_line do |l|
l.lstripped_all!
p l
end
puts "\n\e[1mString#rstripped_all!\e[m\n"
text.each_line do |l|
l.rstripped_all!
p l
end
puts "\n\e[1mString#delete_cntrl!\e[m\n"
text.each_line do |l|
l.delete_cntrl!
p l
end