
以前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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
より高速な画像の表示法
-
機種依存文字をチェックしたい。
-
10Mバイトて文字数に すると何...
-
1KBが1024byteな理由
-
3バイト文字(UTF-8)をprintfで...
-
VB.NET LeftBの代用
-
pythonでバイナリデータを配列...
-
「1TB」のHDDに日本語は何字入...
-
日本語で関数名等を記述するの...
-
char str[256]の256の意味は?
-
CD R の書き込み
-
ピクセル,dpiから容量(バイト...
-
sedコマンドで全ての2バイト文...
-
文字数の限界
-
iconv変換後のサイズについて
-
幅・縦(2px 1px)で50バイト以下...
-
VB6でのファイルサイズ取得につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
ビットスワップとバイトスワッ...
-
ピクセル,dpiから容量(バイト...
-
「1TB」のHDDに日本語は何字入...
-
機種依存文字をチェックしたい。
-
C++ Builderで文字列をバイトに...
-
【VB2005】テキストボックス内...
-
バイト列とバイナリ列の違いが...
-
64bit対応
-
VBAでShift-JISのURLエンコード
-
Javaで日本語1文字のバイト数
-
VB.NET LeftBの代用
-
SQLで1バイト、2バイト混在...
-
URLは最高何文字まで可能なので...
-
:(コロン)のKeyCode
-
memcmp バイナリデータの比較方法
おすすめ情報