全角文字と半角文字を判別する方法を教えていただきたいです。
54 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MATLABで全角文字と半角文字を判別する方法を教えていただきたいでしょうか。
例えば、["A" "B" "1" "2" "A" "B" "1" "2"](左のAB12が半角、右のAB12が全角)
であれば、[1 1 1 1 0 0 0 0]の様な答えが出る形です。
よろしくお願いいたします
0 commentaires
Réponse acceptée
Takashi Ueno
le 23 Mar 2022
下記のような実装ではいかがでしょうか?
半角英数はASCII文字ですのでdouble()でchar型をキャストした際に127以下となります。
s=["A" "B" "1" "2" "A" "B" "1" "2"];
double([s{:}])<128
Plus de réponses (1)
Kojiro Saito
le 23 Mar 2022
半角カナも対象にする場合は、doubleでcharにキャストすると127を超えてしまうので、unicode2nativeでバイトに変換する方法が堅牢です。
Shift-JISだと半角が1バイト、全角が2バイトになるので、バイト数が1なら1、それ以外なら0になるようにすることで位置を特定できます。
s = ["A" "B" "1" "2" "A" "B" "1" "2" "ア" "ア" "あ"];
cell2mat(arrayfun(@(x) length(unicode2native(x, 'Shift_JIS')), s, 'UniformOutput', false)) == 1
Voir également
Catégories
En savoir plus sur デジタル フィルター処理 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!