How to determine if a string is printable?

Is there an easy way to test if a string is printable (doesn't contain
control characters)? Something easier than listing out all the letters,
numbers, and punctuation and checking each character.

Mike Steiner

if(string =~ /.*[\a\b\e\f\n\r\t\v].*/)
  puts "Invalid string"
else
  puts string + " is ok"
end

···

On 5/15/07, Mike Steiner <mikejaysteiner@gmail.com> wrote:

Is there an easy way to test if a string is printable (doesn't contain
control characters)? Something easier than listing out all the letters,
numbers, and punctuation and checking each character.

Mike Steiner

Is there an easy way to test if a string is printable (doesn't contain
control characters)? Something easier than listing out all the letters,
numbers, and punctuation and checking each character.

Based on: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248540

To test for non-printable characters, use:

  str =~ /[^[:print:]]/

Regards,

Bill

···

From: "Mike Steiner" <mikejaysteiner@gmail.com>

Bill Kelly wrote:

From: "Mike Steiner" <mikejaysteiner@gmail.com>

Is there an easy way to test if a string is printable (doesn't contain
control characters)? Something easier than listing out all the letters,
numbers, and punctuation and checking each character.

Based on: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248540

To test for non-printable characters, use:

str =~ /[^[:print:]]/

Even though I am not the OP I tried that and using index but none of them seem to work. I get an error message saying "warning character class has '[' without escape" followed by "warning regexp has ']' without escape" and the return is nil regardless what is in the string.
Is there something I am missing here?

···

Regards,

Bill

Bill Kelly wrote:

Based on: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248540

To test for non-printable characters, use:

str =~ /[^[:print:]]/

Even though I am not the OP I tried that and using index but none of them seem to work. I get an error message saying "warning character class has '[' without escape" followed by "warning regexp has ']' without escape" and the return is nil regardless what is in the string.
Is there something I am missing here?

Not sure. It works for me, without warnings even with ruby -w on:
ruby 1.8.4 (2005-12-24) [i386-mswin32]

And in IRB:

irb(main):117:0> "abc\ndef" =~ /[^[:print:]]/
=> 3 # yes, a non-printable character was found at idx 3

irb(main):118:0> "abcdef" =~ /[^[:print:]]/
=> nil # no, a non-printable character was not found

Regards,

Bill

···

From: "Michael W. Ryder" <_mwryder@worldnet.att.net>

Bill Kelly wrote:

From: "Michael W. Ryder" <_mwryder@worldnet.att.net>

Bill Kelly wrote:

Based on: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248540

To test for non-printable characters, use:

str =~ /[^[:print:]]/

Even though I am not the OP I tried that and using index but none of them seem to work. I get an error message saying "warning character class has '[' without escape" followed by "warning regexp has ']' without escape" and the return is nil regardless what is in the string.
Is there something I am missing here?

Not sure. It works for me, without warnings even with ruby -w on:
ruby 1.8.4 (2005-12-24) [i386-mswin32]

And in IRB:

irb(main):117:0> "abc\ndef" =~ /[^[:print:]]/
=> 3 # yes, a non-printable character was found at idx 3

irb(main):118:0> "abcdef" =~ /[^[:print:]]/
=> nil # no, a non-printable character was not found

OK, I see what I did. I forgot the trailing colon. Still getting used to the language and regular expressions.

···

Regards,

Bill

probably not exactly what you're looking for but I use this quite often for
white space removal:
" a".strip.empty?

···

On 5/16/07, Michael W. Ryder <_mwryder@worldnet.att.net> wrote:

Bill Kelly wrote:
> From: "Michael W. Ryder" <_mwryder@worldnet.att.net>
>> Bill Kelly wrote:
>>>
>>> Based on:
>>> http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248540
>>>
>>> To test for non-printable characters, use:
>>>
>>> str =~ /[^[:print:]]/
>>>
>> Even though I am not the OP I tried that and using index but none of
>> them seem to work. I get an error message saying "warning character
>> class has '[' without escape" followed by "warning regexp has ']'
>> without escape" and the return is nil regardless what is in the string.
>> Is there something I am missing here?
>
> Not sure. It works for me, without warnings even with ruby -w on:
> ruby 1.8.4 (2005-12-24) [i386-mswin32]
>
> And in IRB:
>
> irb(main):117:0> "abc\ndef" =~ /[^[:print:]]/
> => 3 # yes, a non-printable character was found at idx 3
>
> irb(main):118:0> "abcdef" =~ /[^[:print:]]/
> => nil # no, a non-printable character was not found
>

OK, I see what I did. I forgot the trailing colon. Still getting used
to the language and regular expressions.

> Regards,
>
> Bill
>

Regular expression syntax is probably best thought of as a language of
it's own. Or perhaps a family of languages since there are so many
dialects.

···

On 5/16/07, Michael W. Ryder <_mwryder@worldnet.att.net> wrote:

OK, I see what I did. I forgot the trailing colon. Still getting used
to the language and regular expressions.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/