$ ruby -v
ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-darwin9]
$ irb --simple-prompt
s = "a\u4e00" # \u4e00 is the chinese character for "one" in case you can't read the next line
=> "a一"
s.encoding
=> #<Encoding:UTF-8>
s.length
=> 2
s.count("^a")
=> 0
Why the above result is 0 not 1? After all there are 2 characters
in the string s. Is this a bug of String#count?
Thanks in advance.
Ruohao
···
--
Posted via http://www.ruby-forum.com/\.
s = "a\u4e00"
s.count("^a")
=> 0
Why the above result is 0 not 1? After all there are 2 characters
in the string s. Is this a bug of String#count?
count returns the sum of occurrences of characters. I don't see any ^a
in the original string...
···
--
Posted via http://www.ruby-forum.com/\.
Roger Pack wrote:
s = "a\u4e00"
s.count("^a")
=> 0
Why the above result is 0 not 1? After all there are 2 characters
in the string s. Is this a bug of String#count?
count returns the sum of occurrences of characters. I don't see any ^a
in the original string...
But according to the documentation, "Any _other_str_ that starts with a
caret (^)
is negated", thus the following behavior:
$ irb --simple-prompt
s = "abc"
=> "abc"
s.count("^a")
=> 2
There are two characters in s that is *not* "a".
···
--
Posted via http://www.ruby-forum.com/\.
Ruohao Li wrote:
Roger Pack wrote:
s = "a\u4e00"
s.count("^a")
=> 0
Why the above result is 0 not 1? After all there are 2 characters
in the string s. Is this a bug of String#count?
count returns the sum of occurrences of characters. I don't see any ^a
in the original string...
But according to the documentation, "Any _other_str_ that starts with a
caret (^)
is negated", thus the following behavior:
Probably because non-ASCII aren't counted as /\w/ matching anymore. You
might want to ping core to see if it is expected or not.
···
--
Posted via http://www.ruby-forum.com/\.