• ベストアンサー

五十音の並べ替えsortを教えて下さい。

はう ぱあ ばい ↓sort はう ばい ぱあ 五十音でsortして以下のようにする方法を教えて下さい。 ぱあ ばい はう よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • putra0
  • ベストアンサー率50% (4/8)
回答No.2

国語辞典のようにソートしたければ Lingua::JA::Sort::JIS モジュールでできますよ。 # ソースコードのエンコーディングが Shift_JIS の場合 use strict; use Lingua::JA::Sort::JIS; use Encode qw/from_to/; my $jis = Lingua::JA::Sort::JIS->new; my @words = qw/はう ぱあ ばい/; # UTF-8 バイト列に変換(必須) map { from_to($_, "Shift_JIS" => "UTF-8") } @words; for my $word ($jis->jsort(@words)) { # 必要に応じてエンコーディングを変換 from_to($word, "UTF-8" => "Shift_JIS"); print $word, "\n"; } エンコーディングの変換が面倒ですが、UTF-8 のファイルから読んでそのまま書き出せばもっとすっきりします。

参考URL:
http://search.cpan.org/~sadahiro/Lingua-JA-Sort-JIS-0.05/JIS.pod
station702
質問者

お礼

ありがとうございました。 参考http://search.cpan.org/src/SADAHIRO/Lingua-JA-Sort-JIS-0.05/JIS.pm #awk版 function aiu(moji1){ out1=moji1; sub(/[あぁアァアァ]/ ,"あ",out1); sub(/[かがカガヵカガ]/ ,"か",out1); sub(/[さざサザサザ]/ ,"さ",out1); sub(/[ただタダタダ]/ ,"た",out1); sub(/[なナナ]/ ,"な",out1); sub(/[はばぱハバパハバパ]/ ,"は",out1); sub(/[まママ]/ ,"ま",out1); sub(/[やゃヤャヤャ]/ ,"や",out1); sub(/[らララ]/ ,"ら",out1); sub(/[わゎワヮワ]/ ,"わ",out1); sub(/[いぃイィイィ]/ ,"い",out1); sub(/[きぎキギキギ]/ ,"き",out1); sub(/[しじシジシジ]/ ,"し",out1); sub(/[ちぢチヂチヂ]/ ,"ち",out1); sub(/[にニニ]/ ,"に",out1); sub(/[ひびぴヒビピヒビピ]/ ,"ひ",out1); sub(/[みミミ]/ ,"み",out1); sub(/[りリリ]/ ,"り",out1); sub(/[ゐヰ]/ ,"ゐ",out1); sub(/[うぅウヴゥウヴゥ]/ ,"う",out1); sub(/[くぐクグクグ]/ ,"く",out1); sub(/[すずスズスズ]/ ,"す",out1); sub(/[つづっツヅッツヅッ]/ ,"つ",out1); sub(/[ぬヌヌ]/ ,"ぬ",out1); sub(/[ふぶぷフブプフブプ]/ ,"ふ",out1); sub(/[むムム]/ ,"む",out1); sub(/[ゆゅユュユュ]/ ,"ゆ",out1); sub(/[るルル]/ ,"る",out1); sub(/[えぇエェエェ]/ ,"え",out1); sub(/[けげケゲヶケゲ]/ ,"け",out1); sub(/[せぜセゼセゼ]/ ,"せ",out1); sub(/[てでテデテデ]/ ,"て",out1); sub(/[ねネネ]/ ,"ね",out1); sub(/[へべぺヘベペヘベペ]/ ,"へ",out1); sub(/[めメメ]/ ,"め",out1); sub(/[れレレ]/ ,"れ",out1); sub(/[ゑヱ]/ ,"ゑ",out1); sub(/[おぉオォオォ]/ ,"お",out1); sub(/[こごコゴコゴ]/ ,"こ",out1); sub(/[そぞソゾソゾ]/ ,"そ",out1); sub(/[とどトドトド]/ ,"と",out1); sub(/[のノノ]/ ,"の",out1); sub(/[ほぼぽホボポホボポ]/ ,"ほ",out1); sub(/[もモモ]/ ,"も",out1); sub(/[よょヨョヨョ]/ ,"よ",out1); sub(/[ろロロ]/ ,"ろ",out1); sub(/[をヲヲ]/ ,"を",out1); sub(/[んンン]/ ,"ん",out1); return out1}

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

もうすこしはっきりと要件を書くべきです。 濁音や半濁音は「同じ」と見做してソートしたいということですか?

station702
質問者

お礼

関連するQ&A