全角カタカナを半角にする方法

全角カタカナを半角カタカナにするにはどうすればいいですか?
ネット上に半角カタカナから全角カタカナに変換はあったのですが、
逆のパターンが知りたいです。
宜しくお願いします。

 Accepted Answer

Kazuya
Kazuya on 7 May 2019

1 vote

ネット上にあったというのは
これですか? 逆のことができるようにいじるのはいい練習になりそうです・・。

4 Comments

qrqr
qrqr on 7 May 2019
私が言っているのはそのリンク先のことです。
michio
michio on 12 May 2019
書き換え、試してみましたか?
String 型を使うと、replace 関数で文字の置き換えができるので少し簡単かと思いましたのでサンプル作ってみました。少しかっこ悪いですが、変更すべき文字を全部リストアップしちゃうのが簡単だと思います。半角カナの濁音は文字2つになる点が少し厄介でしょうか・・。
% 変換すべき文字リスト作成
halfKana = split("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンー","");
fullKana = split("アイウエオカキクケコサシスセソ" + ...
"タチツテトナニヌネノハヒフヘホ" + ...
"マミムメモヤユヨラリルレロワヲンー","");
halfKanaDakuon = split("カキクケコサシスセソタチツテトハヒフヘホ",{'',' '}) + "゙";
fullKanaDakuon = split("ガギグゲゴザジズゼゾダヂヅデドバビブベボ","");
halfKanaHandakuon = split("ハヒフヘホ","") + "゚";
fullKanaHandakuon = split("パピプペポ","");
% 上の作業では冒頭・最後に不要な文字列が入るので削除
halfKana([1,end]) = [];
fullKana([1,end]) = [];
halfKanaDakuon([1,end]) = [];
fullKanaDakuon([1,end]) = [];
halfKanaHandakuon([1,end]) = [];
fullKanaHandakuon([1,end]) = [];
% 検証(半角 => 全角)
sampleString = '私はタマゴとスムージーとプリンを朝ごはんに食べる';
tmp = replace(sampleString,halfKanaHandakuon,fullKanaHandakuon);
tmp = replace(tmp,halfKanaDakuon,fullKanaDakuon);
sampleStringFull = replace(tmp,halfKana,fullKana)
% 検証(全角 => 半角)
tmp = replace(sampleStringFull,fullKana,halfKana);
tmp = replace(tmp,fullKanaDakuon,halfKanaDakuon);
sampleStringHalf = replace(tmp,fullKanaHandakuon,halfKanaHandakuon)
qrqr
qrqr on 12 May 2019
ありがとうございます。
変に難しく考えすぎていたので、リストアップするのが早いですね。
自分でも試しましたが、ご回答大変参考になります。
michio
michio on 23 May 2019
関数にしてこちらに挙げてみました。参考まで。

Sign in to comment.

More Answers (0)

Products

Release

R2013b

Asked:

on 7 May 2019

Commented:

on 23 May 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!