以前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も見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
[VBScript]バイト長の判定
Visual Basic(VBA)
-
VBScriptである文字列に半角文字が含まれているかどうか調べる方法について
Visual Basic(VBA)
-
vbscriptを用いて他のVBSファイルを実行
その他(プログラミング・Web制作)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
10Mバイトて文字数に すると何...
-
【VB2005】テキストボックス内...
-
UTF-8で5~6バイトになる文字コ...
-
VB.NET LeftBの代用
-
Console.writeLineで文字化け
-
バイト列とバイナリ列の違いが...
-
64bit対応
-
VBでShift_JISへurlエンコード...
-
VBAでUnicodeしか存在しない文...
-
ワイド文字のバイト数が取得で...
-
:(コロン)のKeyCode
-
文字数の限界
-
1KBが1024byteな理由
-
C# で MSSQL から XML 出力で、...
-
文字のバイト数を数えるには
-
「1TB」のHDDに日本語は何字入...
-
COBOLのCOMP形式について
-
機種依存文字をチェックしたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
エクセルシート名の制限を変更...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
「1TB」のHDDに日本語は何字入...
-
ピクセル,dpiから容量(バイト...
-
VBAでShift-JISのURLエンコード
-
ビットスワップとバイトスワッ...
-
Javaで日本語1文字のバイト数
-
機種依存文字をチェックしたい。
-
【VB2005】テキストボックス内...
-
3バイト文字(UTF-8)をprintfで...
-
:(コロン)のKeyCode
-
UCS-2の一覧表が欲しい
-
memcmp バイナリデータの比較方法
-
VB.NET LeftBの代用
-
URLは最高何文字まで可能なので...
-
VBSでテキストファイルの文字列...
おすすめ情報