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

조회 수: 62 (최근 30일)
丈太郎 森川
丈太郎 森川 2022년 3월 23일
댓글: 丈太郎 森川 2022년 3월 23일
MATLABで全角文字と半角文字を判別する方法を教えていただきたいでしょうか。
例えば、["A" "B" "1" "2" "A" "B" "1" "2"](左のAB12が半角、右のAB12が全角)
であれば、[1 1 1 1 0 0 0 0]の様な答えが出る形です。
よろしくお願いいたします

채택된 답변

Takashi Ueno
Takashi Ueno 2022년 3월 23일
下記のような実装ではいかがでしょうか?
半角英数は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
丈太郎 森川
丈太郎 森川 2022년 3월 23일
早速のご回答ありがとうございます。大変助かります。こちらを採用したいと思います。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Kojiro Saito
Kojiro Saito 2022년 3월 23일
半角カナも対象にする場合は、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
丈太郎 森川
丈太郎 森川 2022년 3월 23일
早速のご回答ありがとうございます。今回は英数のみで判別したため、Uenoさんの回答を採用させていただきました。今後カナを使用する際はこちらのコードを参考にさせていただきます。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 三角形分割表現에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!