• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VBScript][wsh]byte単位でのデータの切り出し)

[VBScript][wsh]byte単位でのデータの切り出し

このQ&Aのポイント
  • [VBScript][wsh]byte単位でのデータの切り出しについて困っています。MidB関数を使って文字列の一部を取得しようとしていますが、Unicodeのため表示が化けてしまいます。
  • どうすれば文字列の一部を正しく取得できるでしょうか?
  • 質問内容を理解いたしました。詳細を確認し、解決策を提供いたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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)

casval
質問者

お礼

Wendy02さん ありがとうございます。 やりたいことができました。 ただ、やはり処理時間がかかってしまい、 VBScriptの限界なのかなと思い始めています。 まだ、考え中なので、このままオープンとさせていただきます。 不躾にもかかわらず、丁寧に教えてくださりありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>VBScriptの限界なのかなと思い始めています。 はい、少なくとも私はそう思っています。wsf に使うのは、別に、VBScript だけでもありません。大量なら、Perlという手もあります。 ただ、「開始位置:2 、指定バイト長:5」というような考え方自体に無理があるのかもしれません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

バイトで(決め撃ちで)切り出してるんだから、化けてもしょうがないですよね。 何がしたいのかよくわかりません。

casval
質問者

補足

すみません。補足します。 ================================ tmpLine:"123456789あいうえお" 開始位置:2 、指定バイト長:5 > "23456" 開始位置:10、指定バイト長:4 > "あい" ================================ このような結果を返したいのです。

関連するQ&A