
以前LenBに関して質問した者です。
今回は
「ある文字列の○byte目から△byte分取得する」という処理で困っています。
MidB関数を使うと思うのですが、Unicodeの為、
BASP21の.KconvでSJISに変換してあげています。
HOGEasc = objBasp.Kconv(MidB(tmpLine, ○, △),1)
ここで問題となるのが、切り出した文字列が化けてしまうのです。
以下のようにもう一度Unicodeに変換してあげてもダメです。
HOGEuni = objBasp.Kconv(HOGEasc,4)
いろいろ試してみましたが、お手上げ状態です。
このような処理はできないのでしょうか?
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>以前LenBに関して質問した者です。
前回の質問については、Openのままでは、回答した私としては、けじめがつきませんから、マナーとして、閉めてくださいませんか?
>tmpLine:"123456789あいうえお"
>
>開始位置:2 、指定バイト長:5 > "23456"
>開始位置:10、指定バイト長:4 > "あい"
これは、wsf ではありませんが、このようにすればできるのでは?
つまり、byte で数えて、byte 長に満たしたら、その文字の場所を出すという方法です。後は、wsf に合うように、換えてください。それから、あまり、長い文字列は、かなり遅くなりますね。
'bytecount:
tmpline = "123456789あいうえお"
kaishi = 2
wnum = 5
msg ="開始位置:" & kaishi & " 、指定バイト長:" & wnum
Set objBasp = Wscript.CreateObject("Basp21")
k = 1
For i = 1 To Len(tmpline)
ReDim Preserve bufarray(k)
moji =Mid(tmpline,i,1)
bufarray(k) = LenB(objBasp.Kconv(moji, 1, 5))
k = k + 1
Next
For j = 1 To UBound(bufarray)
cnt1 = cnt1 + bufarray(j)
If cnt1 > kaishi Then
Exit For
End If
Next
For m = j To UBound(bufarray)
cnt2 = cnt2 + bufarray(m)
If cnt2 > wnum Then
Exit For
End If
Next
Msgbox msg
MsgBox Mid(tmpline, j, m - j)
Wendy02さん
ありがとうございます。
やりたいことができました。
ただ、やはり処理時間がかかってしまい、
VBScriptの限界なのかなと思い始めています。
まだ、考え中なので、このままオープンとさせていただきます。
不躾にもかかわらず、丁寧に教えてくださりありがとうございました。
No.3
- 回答日時:
>VBScriptの限界なのかなと思い始めています。
はい、少なくとも私はそう思っています。wsf に使うのは、別に、VBScript だけでもありません。大量なら、Perlという手もあります。
ただ、「開始位置:2 、指定バイト長:5」というような考え方自体に無理があるのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
【マクロ】並び替えの範囲が、...
-
vba textboxへの入力について教...
-
ワードの図形にマクロを登録で...
-
エクエルのVBAコードについて教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Excel VBA 選択範囲の罫線色の...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】開いているブックの...
-
えくせるのVBAコードについて教...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
-
【ExcelVBA】5万行以上のデー...
-
VBA ユーザーフォーム ボタンク...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
「1TB」のHDDに日本語は何字入...
-
ピクセル,dpiから容量(バイト...
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
-
文字コードの利点・欠点について
-
日付時刻を4バイトに
-
機種依存文字をチェックしたい。
-
ビットスワップとバイトスワッ...
-
バイナリとBCDコード
-
UCS-2の一覧表が欲しい
-
sedコマンドで全ての2バイト文...
-
VBAでShift-JISのURLエンコード
-
3バイト文字(UTF-8)をprintfで...
-
URLは最高何文字まで可能なので...
-
シフトJISの2バイト文字
-
この関数はどのプログラミング...
おすすめ情報