gpt4 book ai didi

ruby-on-rails - Ruby 字符串重音错误 : More than meet the eyes

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:51 27 4
gpt4 key购买 nike

我很难把口音弄对,我相信大多数拉丁语都会遇到这种情况,就我而言,葡萄牙语

我有一个字符串作为参数,我必须得到第一个字母并将其大写!这在 ruby​​ 中应该是微不足道的,但这里有一个问题:

s1 = 'alow'; s1.size #=> 4
s2 = 'álow'; s2.size #=> 5

s1[0,1] #=> "a"
s2[0,1] #=> "\303"

s1[0,1].upcase #=> 'A'
s2[0,1].upcase #=> '\303' !!!

s1[0,1].upcase + s1[1,100] #=> "Alow" OK
s2[0,1].upcase + s2[1,100] #=> "álow" NOT OK

我想让它通用,有什么帮助吗?

[编辑]
我发现 Rails 字符串可以转换为多字节,如类 ../active_support/core_ext/string/multibyte.rb 中所示,只需使用:

s2.mb_chars[0,1].upcase.to_s #=> "Á"

不过,@nsdk 方法更容易使用 =)

最佳答案

字符á在UTF-8字符串中不是表示单个字节,而是两字节序列C3A1。因此,当您从字符串中切片 [0,1] 时,您只会得到它的第一个字节,\C3\303,您不能有意义地大写

Ruby 1.8 不支持 Unicode,因此您将与字节字符串作斗争,并且在尝试使用它编写具有国际意识的应用程序时会遇到很多这样的问题。见例如。 this question一些背景。 Ruby 1.9 终于解决了这个问题(尽管我不喜欢它的方法)。

关于ruby-on-rails - Ruby 字符串重音错误 : More than meet the eyes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com