- - PR -
コントロール名で使用不可("〒"、"&"、"#"など)の全角文字を探しています。
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-04-13 12:56
こんな感じですかねー?
先頭に禁止されているのと完全禁止されているのを合わせてると、サロゲートとか抜いて11,400文字ほどになりますか。 Shift_jisに限定すると先頭禁止・完全禁止あわせて346字(制御文字等含む)。 完全禁止のShift_jisにおける2バイト文字限定で242文字。 [ メッセージ編集済み 編集者: Hongliang 編集日時 2005-04-13 12:58 ] [ メッセージ編集済み 編集者: Hongliang 編集日時 2005-04-13 13:10 ] | ||||||||||||||||||||
|
投稿日時: 2005-04-13 20:34
無いなら作ればええやん。と思ったので、作ってアップしようかと思ったのですが、それじゃぁ面白くないので、作るまでの過程をアップします。 ご呈示頂いているURにLは、Unicodeのカテゴリと、VB.NETおよびC#での命名規則がありました。ここで、 1.すべての文字のカテゴリをチェックして、OKなものは印字する ということをすれば、『コントロール名に使えない文字一覧を、自分で出力する』の逆が出来ますよね。ここで「使える」ものをチェックするのは、使えないものの中に非印字文字があるかもしれないからです。 これをプログラムコードにするために、コード化できそうなくらいに細分化します。 まず、「すべての文字」ですが、ループを使えばいけそうです。 次に「文字のカテゴリをチェック」です。これはチェックして、結果を何かの変数に入れておけばいいでしょう。 そして「OKなもの」です。これはIF文ですね。 最後に「印字する」です。ここではSystem.Console.Writeメソッドを使いましょう。 ここまでを、プログラムコードのように並べます。
ここで問題になるのが「文字のカテゴリをチェックする」ところです。そんなメソッドが用意されているなら、それを利用すればいいですよね。ということで、MSDNの検索機能を利用します。UnicodeCategory列挙体を示して頂いていますから、これを検索しましょう。きっとMSDN中には「このメソッドは文字のカテゴリを識別して、UnicodeCategory列挙体を返します」と書かれているはずです。ここで日本語の部分は不確定ですが、戻り値の型は書いてあるはずです。 ということで検索すると、80件のトピックが見つかりました。タイトルを眺めると、「Char.GetUnicodeVategory メソッド」というのがあります。怪しそうです。ダブルクリックします。
ドンピシャです。これで「文字のカテゴリをチェックする」部分が出来ました。 次の問題は「すべての文字をループ」です。すべての文字ですが、文字コードはどこからどこまであって、どうやって列挙すればいいのでしょうか。 幸いなことに、先ほどの検索結果はChar構造体のメソッドでした。Char・・・キャラクタ・・・どうも文字と関係がありそうです。そこで、ドキュメントの下にある「Char 構造体」のリンクをクリックします。
これで良さそうです。書いてあることを読んでいくと、0x0000から0xffffの値(16bit整数値)を取るということ、IConvertibleを実装しているので、型の変換が出来るということがわかります。これでループも解決です。0x0000から0xffffまでの数値でループして、その数値をChar構造体に変換すればいけそうです。 最後に「使用可能」の判断です。これは、上ではif文と書きましたが、switch(VB.NETではSelect)を使いましょう。使えるものだけcase句に列挙すればいいでしょう。 あとは先の日本語プログラムを、VB.NETなりC#なりのコードに置き換えればいいと思います。
これを書いたのは、考える順序、作る順序を学んで欲しいからです。プログラム作りは、中学や高校のテストと違って、参考書見放題です。しかし、最近の学校では教えてくれない、考えること、応用することを要求します。応用するためには、基本が必要です。基本の1つとして頂ければ幸いです。 _________________ | ||||||||||||||||||||
|
投稿日時: 2005-04-15 09:33
みなさん、本当にありがとうございます。
自分で思っていたより、難しいようです。 そこで、時間を掛けて、勉強しながら作ってみたいと思います。 今後ともよろしくお願いします。 | ||||||||||||||||||||
|
投稿日時: 2005-04-17 15:13
難しいですか 面倒をおかけして申し訳ないですが、どこが難しいと思うか、教えて頂けませんか? プログラミング初心者でもわかるように順を追って書いたつもりなのですが。 MSDNから検索するのが難しい、それもよく聞きます。ですから、検索キーを選ぶヒントと、なぜそれを検索キーとするかを示したつもりです。 # 目指せMVP for MSDN < 注)そんなカテゴリはない 私はオンライン・コミュニティから推薦されたMVPなので、オンラインでできる方法を教えられないなら、ちょっと問題なので、是非教えて頂けるよう、お願いします。 _________________ |