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

60 Ansichten (letzte 30 Tage)
丈太郎 森川
丈太郎 森川 am 23 Mär. 2022
Kommentiert: 丈太郎 森川 am 23 Mär. 2022
MATLABで全角文字と半角文字を判別する方法を教えていただきたいでしょうか。
例えば、["A" "B" "1" "2" "A" "B" "1" "2"](左のAB12が半角、右のAB12が全角)
であれば、[1 1 1 1 0 0 0 0]の様な答えが出る形です。
よろしくお願いいたします

Akzeptierte Antwort

Takashi Ueno
Takashi Ueno am 23 Mär. 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 Kommentar
丈太郎 森川
丈太郎 森川 am 23 Mär. 2022
早速のご回答ありがとうございます。大変助かります。こちらを採用したいと思います。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 三角形分割表現 finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!