gpt4 book ai didi

ruby - 为什么这个 Unicode gsub 替换在 Ruby 中不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:56 24 4
gpt4 key购买 nike

another question有人问如何替换 Umlaute。接受的问题是以下代码:

# encoding: utf-8
foo = "ich bin doch nicht blöd, mann!".gsub(/[äöü]/) do |match|
case match
when "ä" 'ae'
when "ö" 'oe'
when "ü" 'ue'
end
end
puts foo

但是,当我尝试运行它时,输出是:

$ ruby /tmp/test.rb 
ich bin doch nicht bld, mann!

所以元音变音显然不会被替换。 我缺少什么吗?我使用的是 Ruby 1.9.3p362(2012-12-25 修订版 38607)[x86_64-linux]

最佳答案

您使用的语法不正确,您需要使用 then 或换行符和缩进。

# encoding: utf-8
foo = "ich bin doch nicht blöd, mann!".gsub(/[äöü]/) do |match|
case match
when "ä" then 'ae'
when "ö" then 'oe'
when "ü" then 'ue'
end
end

puts foo

# encoding: utf-8
foo = "ich bin doch nicht blöd, mann!".gsub(/[äöü]/) do |match|
case match
when "ä"
"ae"
when "ö"
"oe"
when "ü"
"ue"
end
end

执行此操作的可靠方法是 result = Iconv.iconv('ascii//ignore//translit', 'utf-8', foo) 但您需要将语言环境设置为 "de_DE" 在没有 c 扩展名的情况下无法在 ruby​​ 中完成。

关于ruby - 为什么这个 Unicode gsub 替换在 Ruby 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287585/

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