入力する文字で、第1水準、第2水準までを使用したいのですが、プログラムのロジックで制御したりすることは可能なのでしょうか。

回答の条件
  • 1人2回まで
  • 登録:2007/06/06 14:16:40
  • 終了:2007/06/13 14:20:03

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/06/06 14:43:11

ポイント35pt

可能です。

文字を一文字単位に分割して、その文字のキャラクタコードが第一及び第二水準の中に含まれていれば○、範囲外なら×というロジックを組めば良いのですが、どのような環境(WindowsやMacなどで動く特定のプログラム? それともWEB系の処理?などなど)で、どのような処理系(言語)なのかによって具体的な対応方法は微妙に異なりますので、そのあたりを私への返答に加えておいていただけると、より具体的な回答を得やすくなると思いますよ。

キャラクタコード表の例

http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0208.html

id:kotobajp

kn1967さんご回答ありがとうございました。

また、貴重なご指摘ありがとうございます。

環境はWindows上で動く単体のプログラムで、VB.Netで組まれています。

本プログラムの用途といたしましては、CSV形式のテキストを読み込み、読み込んだデータを配列に格納、カンマごとに区切られた項目をそれぞれチェックするというバッチ系のプログラムになります。

今回質問としてあげさせていただいた部分はある特定の項目にある全角の漢字が第一及び第二水準内に含まれているいるかどうかをチェックしたいというものです。

より参考になるご意見をお持ちでしたら、是非教えてください。よろしくお願い致します。

2007/06/06 15:28:16
id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422007/06/07 00:41:56

ポイント35pt

VB.NETということであれば、次のような手順になるかと思います。

(1)チェック文字(列)がString型であれば、UnicodeなのでシフトJISに変換する。

System.Text.Encoding.GetEncoding(932).GetBytes("String型の文字列を指定する")

でシフトJISに変換されたバイト列を取得できます。

(2)シフトJISのバイト列から第1水準または第2水準をチェックする。

第1水準=&h889F~&h9872

第2水準=&h989F~&hEAA4


2文字以上チェックが必要な場合は、String型の時点で1文字ずつ切り出してからシフトJISに変換してコードチェックすると良いと思います。

id:kotobajp

ご回答ありがとうございました。

大変参考になりました。

2007/06/11 13:59:24
  • id:kn1967
    私はVB.NET環境をもっていないので実際に動くもののサンプルは作れませんのでコメント欄を汚しますが、
    .NET環境であれば正規表現を用いる事が出来るので1文字毎に切り出してチェックなどしなくても良いと思いますよ。

    正規表現の例
    http://www.atmarkit.co.jp/fdotnet/dotnettips/054iskana/iskana.html

    キャラクタコード表の例(.NETの内部ではunicodeだということでUTF-16のある表の例)
    http://ash.jp/code/unitbl21.htm(第一水準)
    http://ash.jp/code/unitbl22.htm(第二水準)
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません