将全角日语文本转换为半角(zen-kaku 到 han-kaku)

问题描述 投票:0回答:4

在 PHP 中,可以使用函数

mb_convert_kana
将双宽度字符转换为单宽度字符。他们称之为“将 zen-kaku 转换为 han-kaku”。

例如,我有一个字符串要转换:

dbl = "BOX"

我想找到这样的方法

dbl = "BOX".convert_to_half_width # dbl is now "BOX"

Ruby 有没有办法做到这一点?

ruby text unicode cjk
4个回答
7
投票

我使用了 Ruby 内置

NKF
String#tr

的组合
require 'nkf'
dbl = "BOXカタカナ"
dbl = NKF.nkf('-X -w', dbl).tr('0-9a-zA-Z', '0-9a-zA-Z')
# dbl now is "BOXカタカナ"

这还有一个额外的好处,即可以将半角片假名转换为全角片假名。


2
投票

嗯,它不漂亮,它只适用于罗马字(可以扩展到处理其他字符),但它对我有用:

title = "BOX"
englishReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
japaneseReplacements = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

converted = title.tr(japaneseReplacements, englishReplacements) 
# title is now "BOX"

0
投票

有一个宝石可以做到这一点:hz_on_fly


0
投票

我认为 Moji gem(日语文档)非常适合于此,并且通常也是一个非常有用的日语语言 gem(适用于 Ruby 1.8 和 1.9):

require 'moji'

dbl = Moji.zen_to_han("BOX")
# => "BOX"
© www.soinside.com 2019 - 2024. All rights reserved.