S.G*_*ami 2 ruby string encoding
我已经看到Ruby的String#next可以处理非ASCII字符。说我会英语,孟加拉语和北印度语:
> 'a'.next # => "b"
> '?'.next # => "?"
> '?'.next # => "?"
Run Code Online (Sandbox Code Playgroud)
哪个是对的。
现在,我想为prevString类动态定义一个方法。我可以做这个:
String.define_method(:prev) { slice(0..-2) + slice(-1).ord.-(1).chr }
> 'hit'.prev # => "his"
> 'b'.prev # => "a"
> '?'.prev
Traceback (most recent call last):
4: from /home/sourav/.irb:351:in `<main>'
3: from (irb):17
2: from (irb):11:in `block in irb_binding'
1: from (irb):11:in `chr'
RangeError (2325 out of char range)
Run Code Online (Sandbox Code Playgroud)
但是它应该返回以下内容:
> 'b'.prev # => "a"
> '?'.prev # => "?"
> '?'.prev # => "?"
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?