全角文字と半角文字を​判別する方法を教えて​いただきたいです。

58 vues (au cours des 30 derniers jours)
丈太郎 森川
丈太郎 森川 le 23 Mar 2022
MATLABで全角文字と半角文字を判別する方法を教えていただきたいでしょうか。
例えば、["A" "B" "1" "2" "A" "B" "1" "2"](左のAB12が半角、右のAB12が全角)
であれば、[1 1 1 1 0 0 0 0]の様な答えが出る形です。
よろしくお願いいたします

Réponse acceptée

Takashi Ueno
Takashi Ueno le 23 Mar 2022
下記のような実装ではいかがでしょうか?
半角英数はASCII文字ですのでdouble()でchar型をキャストした際に127以下となります。
s=["A" "B" "1" "2" "A" "B" "1" "2"];
double([s{:}])<128
ans = 1×8 logical array
1 1 1 1 0 0 0 0
  1 commentaire
丈太郎 森川
丈太郎 森川 le 23 Mar 2022
早速のご回答ありがとうございます。大変助かります。こちらを採用したいと思います。

Connectez-vous pour commenter.

Plus de réponses (1)

Kojiro Saito
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
ans = 1×11 logical array
1 1 1 1 0 0 0 0 0 1 0
  1 commentaire
丈太郎 森川
丈太郎 森川 le 23 Mar 2022
早速のご回答ありがとうございます。今回は英数のみで判別したため、Uenoさんの回答を採用させていただきました。今後カナを使用する際はこちらのコードを参考にさせていただきます。

Connectez-vous pour commenter.

Catégories

En savoir plus sur 三角形分割表現 dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!