+4

Thao tác với các kiểu dữ liệu là tiếng nhật

Hôm nay mình xin giới thiệu một gem dùng cho việc xử lý dữ liệu là tiếng nhật. Cụ thể để chuyển đổi giữa các kiểu chữ hiragana, katakana, romaji và có thể chuyển đổi từ full-width sang half-width và ngược lại.

Đặc điểm

  • Không thể chuyển đổi sang chữ kanji
  • Thêm các mothod kiểm tra và chuyển đổi Japanese kana vào String class
  • Sử dụng Moji để phát hiện và chuyển đổi những chuỗi kana (tức là, hiragana, katakana)
  • Sử dụng mã từ romajinizer để chuyển đổi từ kana về romaji và ngược lại

Cách cài đặt

Thêm dòng sau vào file Gemfile trong ứng dụng của bạn

gem 'mojinizer'

và chạy câu lệnh

$ bundle

hoặc bạn có thể cài đặt bằng cách chạy lệnh

$ gem install mojinizer

Cách sử dụng

Phương thức chuyển đổi và kiểm tra chuỗi tiếng nhật được thêm vào String class. Bạn có thể gọi giống như bạn gọi bất kỳ method của đối tượng String nào đấy.

Các phương thức chuyển đổi

  • Chuyển đổi từ hiragana/katakana sang romaji (平仮名/片仮名 --> ロ-マ字 変換)
"つくえ".romaji #=> "tsukue"
"ツクエ".romaji #=> "tsukue"
  • Chuyển đổi từ katakana/romaji sang hiragana (片仮名/ロ-マ字 --> 平仮名 変換)
"ツクエ".hiragana #=> "つくえ"
"tsukue".hiragana #=> "つくえ"
  • Chuyển đổi từ hiragana/romaji sang katakana (平仮名/ロ-マ字 --> 片仮名 変換)
"つくえ".katakana #=> "ツクエ"
"tsukue".katakana #=> "ツクエ"
  • Chuyển đổi từ hiragana sang katakana (平仮名 --> 片仮名 変換)
  • Chuyển đổi từ katakana sang hiragana (片仮名 --> 平仮名 変換)
"つくえ".hira_to_kata #=> "ツクエ"
"ツクエ".kata_to_hira #=> "つくえ"
  • Chuyển đổi từ chữ half-width sang full-width
  • Chuyển đổi từ chữ full-width sang half-width
"アロハ".han_to_zen #=> "アロハ"
"Aloha!".han_to_zen #=> "Aloha!"
"アロハ".zen_to_han #=> "アロハ"
"Aloha!".zen_to_han #=> "Aloha!"
"アロハ!".normalize_zen_han #=> "アロハ!"
"「Aloha」".normalize_zen_han #=> "「Aloha」"
  • Kết hợp giữa các phương thức chuyển đổi
"tsukue".katakana.zen_to_han #=> "ツクエ"
"ツクエ".han_to_zen.hiragana #=> "つくえ"
"ツクエ".han_to_zen.romaji #=> "tsukue"
"ツクエ".han_to_zen.romaji.upcase #=> "TSUKUE"
"ツクエ".han_to_zen.romaji.upcase.han_to_zen #=> "TSUKUE"

Các phương thức kiểm tra

Sử dụng để kiểm tra các kiểu dữ liệu tiếng nhật(ví dụ hiragana, katakana, kanji, full/half-width, v.v..). Có 2 phương pháp kiểm tra: kiểm tra trên toàn bộ chuỗi và kiểm tra chuỗi có chứa ký tự có chứa ký tự đang tìm không

Kiểm tra toàn bộ chuỗi

  • kiểm tra toàn bộ chuỗi kana(hiragana/katakana)? (かな/カナ・文字種判定)
"アロハ".kana? #=> true
"すし".kana? #=> true
"Aloha".kana? #=> false
"Let's eat すし".kana? #=> false
  • Kiểm tra toàn bộ chuỗi hiragana? (平仮名・文字種判定)
  • Kiểm tra toàn bộ chuỗi katakana? (片仮名・文字種判定)
"アロハ".katakana? #=> true
"すし".katakana? #=> false
"アロハ everybody".katakana? #=> false
"アロハ".hiragana? #=> false
"すし".hiragana? #=> true
"Let's eat すし".hiragana? #=> false
  • Kiểm tra toàn bộ chuỗi kanji? (漢字・文字種判定)
"金曜日".kanji? #=> true
"金曜日だよ".kanji? #=> false
"It's Friday, 金曜日".kanji? #=> false
  • Kiểm tra toàn bộ chuỗi hankaku? (半角・文字種判定)
  • Kiểm tra toàn bộ chuỗi zenkaku? (全角・文字種判定)
  • Kiểm tra toàn bộ chuỗi ASCII zenkaku? (ASCII全角・文字種判定)
"アロハ".hankaku? #=> true
"アロハ".hankaku? #=> false
"アロハ".zenkaku? #=> false
"アロハ everybody".zenkaku? #=> true
"アロハ everybody".ascii_zenkaku? #=> false
"Aloha".ascii_zenkaku? #=>
  • Kiểm tra toàn bộ chuỗi Japanese? (日本語・文字種判定)
"アロハ".japanese? #=> true
"Let's eat すし".japanese? #=> false

Kiểm tra một phần của chuỗi

  • Kiểm tra chuỗi có chứa kana(hiragana/katakana) không? (かな/カナ・文字種判定)
"Let's eat すし".contains_kana? #=> true
  • Kiểm tra chuỗi có chứa hiragana không? (平仮名・文字種判定)
  • Kiểm tra chuỗi có chứa katakana không? (片仮名・文字種判定)
"アロハ everybody".contains_katakana? #=> true
"Let's eat すし".contains_katakana? #=> false
"アロハ everybody".contains_hiragana? #=> false
"Let's eat すし".contains_hiragana? #=> true
  • Kiểm tra chuỗi có chứa kanji không? (漢字・文字種判定)
"金曜日だよ".contains_kanji? #=> true
"It's Friday, Friday".contains_kanji? #=> false
  • Kiểm tra xem chuỗi có chứa hankaku không? (半角・文字種判定)
  • Kiểm tra xem chuỗi có chứa zenkaku không? (全角・文字種判定)
  • Kiểm tra xem chuỗi có chứa ASCII zenkaku không? (ASCII全角・文字種判定)
"アロハ everybody".contains_hankaku? #=> true
"Let's eat すし".contains_hankaku? #=> false
"アロハ everybody".contains_zenkaku? #=> false
"Let's eat すし".contains_zenkaku? #=> true
"アロハ everybody".contains_ascii_zenkaku? #=> false
"Let's eat sushi".contains_ascii_zenkaku? #=> true
  • Kiểm tra xem chuỗi có chứa Japanese không? (日本語・文字種判定)
"Let's eat すし".contains_japanese? #=> true
"It's Friday, Friday".contains_japanese? #=> false

Kiểm tra cùng với moji_type? và contains_moji_type?

Gem moji cung cấp method customizable. Mojinizer mở rộng của method moji_type? và contains_moji_type?(cho phép ký tự đặc biệt trong chuỗi). Ví dụ này có sử dụng ký tự trong chuỗi string

"アロハー!".moji_type?(Moji::KATA) #=> false
"アロハー!".moji_type?(Moji::KATA | Moji::SYMBOL) #=> true
"アロハー!".contains_moji_type?(Moji::ZEN_SYMBOL) #=> true
"アロハー!".contains_moji_type?(Moji::HIRA) #=> false

Khi bạn dùng moji_type? và contains_moji_type? thì bạn phải phải nhớ rằng

  • HAN: có nghĩa là hafl-size
  • ZEN: có nghĩa là full-size
  • KATA: có nghĩa là chữ katakana
  • HIRA: có nghĩa là chữ hiragana
  • KANJI: có nghĩa là chữ kanji

Nguồn tham khảo

Bài viết trên mình có tham khảo tại nguồn https://github.com/ikayzo/mojinizer


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí