Ruby 将全宽日语文本转换为半宽(zen kaku到han kaku)
在PHP中,可以使用函数Ruby 将全宽日语文本转换为半宽(zen kaku到han kaku),ruby,text,unicode,cjk,Ruby,Text,Unicode,Cjk,在PHP中,可以使用函数mb\u convert\u kana将双宽字符转换为单宽字符。他们称之为“将禅宗卡库转化为汉卡库”。例如,我有一个字符串要转换: dbl = "BOX" 我想找到这样的方法 dbl = "BOX".convert_to_half_width # dbl is now "BOX" 在Ruby中有什么方法可以做到这一点吗?有一个很好的方法:好吧,它不漂亮,只对Romaji有效(可以扩展到处理其他字符),但对我有效: title = "BOX" englishReplac
mb\u convert\u kana
将双宽字符转换为单宽字符。他们称之为“将禅宗卡库转化为汉卡库”。例如,我有一个字符串要转换:
dbl = "BOX"
我想找到这样的方法
dbl = "BOX".convert_to_half_width # dbl is now "BOX"
在Ruby中有什么方法可以做到这一点吗?有一个很好的方法:好吧,它不漂亮,只对Romaji有效(可以扩展到处理其他字符),但对我有效:
title = "BOX"
englishReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
japaneseReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
converted = title.tr(japaneseReplacements, englishReplacements)
# title is now "BOX"
我使用Ruby内置的
NKF
和String#tr
需要“nkf”
dbl=”BOXカタカナ"
dbl=NKF.NKF('-X-w',dbl).tr('0-9a-zA-Z', '0-9a-zA-Z')
#dbl现在是“盒子”カタカナ"
这还有一个额外的好处,就是将半宽片假名转换为全宽片假名。我认为gem()非常适合这种情况,并且通常是非常有用的日语gem(适用于Ruby 1.8和1.9):
我需要将一半转换为完全,而nkf似乎无法做到这一点。因此这确实有帮助。它对我不起作用。nkf.nkf('-X-w',”カタカナ") => "カタカナ“@KaranBamniya此答案将全宽0-9、a-z、a-z转换为半宽ASCII字符,同时将半宽片假名转换为全宽片假名。如果要将全宽片假名转换为半宽片假名,请使用
NKF.NKF('-Z4w','カタカナ') => "カタカナ"代码>
require 'moji'
dbl = Moji.zen_to_han("BOX")
# => "BOX"