• ベストアンサー

VB6で漢字の1バイト目か2バイト目かの判定

chibita_papaの回答

  • ベストアンサー
回答No.3

5バイト取得という事でガチガチに作っていますが、 必要なら引数を調整して汎用的にして下さい。 Sub TEST() Dim pos As Integer Dim s As String s = "123あいう" pos = Left5(s) Debug.Print StrConv(MidB$(StrConv(s, vbFromUnicode), 1, pos), vbUnicode), StrConv(MidB$(StrConv(s, vbFromUnicode), pos + 1), vbUnicode) s = "4え5おか" pos = Left5(s) Debug.Print StrConv(MidB$(StrConv(s, vbFromUnicode), 1, pos), vbUnicode), StrConv(MidB$(StrConv(s, vbFromUnicode), pos + 1), vbUnicode) End Sub Function Left5(ByVal vstr As String) As Integer '切る位置が全角文字の真中かどうか判定する If Len(StrConv(LeftB(StrConv(vstr, vbFromUnicode), 5), vbUnicode)) _ = Len(StrConv(LeftB(StrConv(vstr, vbFromUnicode), 4), vbUnicode)) Then '1バイト前で切ったときに文字数が変わらないのは切った位置が全角文字の後半であるので '切り位置が正しいと判断する Left5 = 5 Else '泣き別れのパターン Left5 = 4 End If End Function

tak_y
質問者

お礼

回答ありがとうございました。 私の質問の仕方が悪かったのか、意図したものとズレがありました・・・申し訳ないです。

関連するQ&A

  • EUCの漢字第1バイトを判定する

    EUCの文字列の最終文字が漢字第1バイトであるかを判定 したいのですが・・・・。 char work[21]; . . memcpy(work, &buf[0], 20); if(work[19] >= 0xa1 && work[19] <= 0xdd || work[19] >= 0xdf && work[19] <= 0xfe){ . . このようなコードでworkにコピーした文字列の最後の文字が 漢字第1バイトか判定しています。 しかし、コンパイルではwaningがでて処理もうまくいきません。 よい方法を教えていただけないでしょうか? よろしくお願いします。

  • 2byte文字の判定

    お世話になります。 2バイト文字かどうかの判定のやり方ですが、 String a = "";//←判定したい1文字(とりあえずStringとします) byte[] b = a.getByte(); if((int)b[0]<0){ //2byte文字 }else{ //1byte文字 } という判定の方法はありですか? それとも根本的に考え方間違えてますでしょうか??

    • ベストアンサー
    • Java
  • 漢字、カタカナ、ひらがな、英数字の判定

    perl5.8.5でCGIのプログラムを作っています。 入力された文字(2バイト文字)が「漢字」「カタカナ」「ひらがな」「英数字」「その他」のどれなのか文字種類を判定したいと思っています。 プログラムの文字コードはEUCで書いています。 よろしくお願いします。

  • Javaで文字を漢字であるか否かを判定する

    ある文字を、漢字であるかそれ以外であるかを判定したいです。Javaの標準でそのようなことは可能なのでしょうか。お手数をおかけしますが、宜しくお願い致します。

    • ベストアンサー
    • Java
  • 常用漢字?でない文字を判定する方法を探しています。

    文字コードがUTF8のファイルがあります。 この中に、SJISで表示できない文字があり、常用漢字?でない文字を判定する方法を探しています。 文字コードに詳しい方教えてください。 アルゴリズムは、perlでもCでも構いません。

    • ベストアンサー
    • Perl
  • VB2005でJIS拡張漢字の各文字コードを取得する方法

    ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。 基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。 失敗している文字は内部的に「?」(3F)となってしまいます。 例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?) 正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。 【環境】WindowsXP     VisualBasic2005 【プログラムの流れ】例:SJISコードを取得する場合 文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)

  • [VBScript]バイト長の判定

    テキストのバイト長を取得したく「LenB関数」を使用したのですが、Unicodeの為、半角も全角も全て2バイトでカウントされてしまいます。 「StrConv関数」もVBScriptにはないため、どうしたものかと困っています。 一文字ずつコード値を出して、1バイトか2バイトに振り分けるという処理は、データの量からして現実的ではありません。 なにかよい方法がありましたらおしえてください。 よろしくお願いします。

  • オブジェクトの有無を判定

    表題の件につき、ぐぐったところ、 document.getElementById(id).style.visibility で判定が出来るとのことだったのですが、 取得される値が空白値になってしまいます。 他にオブジェクトの有無を判定する方法をご存知の方ご教授ください。 よろしくお願い致します。

  • VBAでコードから漢字に変換するのは

    VBAを使用していますが、コードから漢字を求める方法が見つかりません。 たとえば、3021から漢字の亜を求めたいのですが。 1バイト文字ならChr関数で求められますが、2バイト文字、つまり、漢字を求める方法が見つからないのです。 どなたか教えていただきたいのですが。

  • SJIS漢字1バイト目欠落の原因をどなたか教えてください

    Windows2000,IIS6環境でASPのアプリケーションですが、 数百件に1件の割合で変数に設定した漢字の文字化けが発生します。 原因はSJISの1バイト目の欠落によるものということは判明しましたが、なぜ1バイト目が欠落するのかどなたか原因を教えていただきたく お願い致します。