Ruby/Development/KCODE
Материал из Wiki.crossplatform.ru
Версия от 17:10, 26 мая 2010; (Обсуждение)
Check string size for non ascii code
#!/usr/bin/ruby -Ku -rjcode string = "\xef\xbc\xa1" + "\xef\xbc\xa2" + "\xef\xbc\xa3" + "\xef\xbc\xa4" + "\xef\xbc\xa5" + "\xef\xbc\xa6" string.size # => 18 string.jsize # => 6
Count non-ascii string
string = "\xef\xbc\xa1" + "\xef\xbc\xa2" + "\xef\xbc\xa3" + "\xef\xbc\xa4" + "\xef\xbc\xa5" + "\xef\xbc\xa6" string.count "\xef\xbc\xa2" # => 13 string.jcount "\xef\xbc\xa2" # => 1
Handling International Encodings
$KCODE="u" require "jcode" $ ruby -Ku -rjcode
$KCODE Demo
#!/usr/bin/env ruby p $KCODE eacute = "" eacute << 0303 << 0251 p eacute $KCODE = "u" p $KCODE p eacute
$KCODE = "u"
$KCODE = "u" french = "\xc3\xa7a va" $KCODE = "u" french.scan(/./) { |c| puts c }
Length of non-ascii string
"\xef\xbc\xa2".length # => 3 "\xef\xbc\xa2".jlength # => 1
Setting the $KCODE global variable to "u" and loading jcode gives regular expressions awareness of UTF-8 characters
$KCODE = "u" require "jcode" "".scan(/./) do |character| puts character end
Using jcode you can make regular expressions UTF-8 aware
$KCODE = "u" require "jcode" class String def reverse scan(/./).reverse.join end end puts "asd".reverse