■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#5772-0文字列の分割方法を教えて下さいわーさん1999-12-16(木) 21:06
     #5774-0RE#5772:文字列の分割方法を教えて下さい通りすがり1999-12-16(木) 21:31
     #5776-0RE#5774:文字列の分割方法を教えて下さいわーさん1999-12-16(木) 21:51
     #5778-0RE#5776:文字列の分割方法を教えて下さい魔界の仮面弁士1999-12-16(木) 22:09
     #5777-0RE#5776:文字列の分割方法を教えて下さい通りすがり1999-12-16(木) 22:09
     #5780-0RE#5776:文字列の分割方法を教えて下さいMaOh1999-12-16(木) 22:22
     #5787-0RE#5780:文字列の分割方法を教えて下さいわーさん1999-12-17(金) 10:10
     #5790-0RE#5787:文字列の分割方法を教えて下さいMaOh1999-12-17(金) 11:24
#5772-0
文字列の分割方法を教えて下さい
"123,456,789"という文字列を、"123" "456" "789" というように、
カンマをキーにして分割したいのですが、何か上手い方法があったら教えて下さい。
VBではこのような関数なり、APIがあるのでしょうか?

ちなみに現在は、instr関数でカンマの位置を調べて取り出す方法でやっています。
もっとプログラムがシンプルにならないかと思いまして・・・。

宜しく御願いします。m(_ _)m
#5774-0
RE#5772:文字列の分割方法を教えて下さい
> "123,456,789"という文字列を、"123" "456" "789" というように、
> カンマをキーにして分割したいのですが、何か上手い方法があったら教えて下さい。
> VBではこのような関数なり、APIがあるのでしょうか?
Split関数でOK。

これは、VB6なら標準で使える関数ですし、そうでなければ、
マイクロソフトスクリプトコントロール経由で、VBScriptを呼び出せば使えますね。
#5776-0
RE#5774:文字列の分割方法を教えて下さい
> > "123,456,789"という文字列を、"123" "456" "789" というように、
> > カンマをキーにして分割したいのですが、何か上手い方法があったら教えて下さい。
> > VBではこのような関数なり、APIがあるのでしょうか?
> Split関数でOK。
> 
> これは、VB6なら標準で使える関数ですし、そうでなければ、
> マイクロソフトスクリプトコントロール経由で、VBScriptを呼び出せば使えますね。

素早い回答、ありがとうございます。
私はVB5を使ってますので、Split関数は標準では使えないようです。
そこで、VBScriptを呼び出す方法でやりたいのですが、このやり方も分かりません。
教えていただけませんか?

あと、VBScriptとはなんでしょうか?
なんらかのスクリプトですか?
これを使うためには、別に用意しなければならないのでしょうか?

宜しく御願いします。m(_ _)m
#5778-0
RE#5776:文字列の分割方法を教えて下さい
> 私はVB5を使ってますので、Split関数は標準では使えないようです。
> そこで、VBScriptを呼び出す方法でやりたいのですが、このやり方も分かりません。
> 教えていただけませんか?
引数は、VB6のSplit関数と互換性を持たせてあります。

Public Function Split(ByVal Expression As String, _
             Optional ByVal Delimiter As String = " ", _
             Optional ByVal Count As Long = -1, _
             Optional ByVal Compare As VbCompareMethod = vbBinaryCompare _
                     ) As Variant
    '参照設定しなくても使えるようにするやり方
    Dim Script As Object
    Set Script = CreateObject("MSScriptControl.ScriptControl")

    'スクリプトの指定
    Script.Language = "VBScript"
    'VBScriptコードを記述
    Script.AddCode "Function A(Expression, Delimiter, Count, Compare)     " & vbCrLf & _
                   "    A = Split(Expression, Delimiter, Count, Compare)  " & vbCrLf & _
                   "End Function                                          "
    'それを実行
    Split = Script.Run("A", Expression, Delimiter, Count, Compare)
    Set Script = Nothing
End Function


> あと、VBScriptとはなんでしょうか?
> なんらかのスクリプトですか?
です。

> これを使うためには、別に用意しなければならないのでしょうか?
上記のコードが動かない場合は、マイクロソフトのホームページから、
Microsoft Script Controlというのを、ダウンロードしてきてください。
#5777-0
RE#5776:文字列の分割方法を教えて下さい
>> これは、VB6なら標準で使える関数ですし、そうでなければ、
>> マイクロソフトスクリプトコントロール経由で、VBScriptを呼び出せば使えますね。
MSScriptControlね。

> 私はVB5を使ってますので、Split関数は標準では使えないようです。
先に書いておくべきでしたねぇ。(^-^;)

> そこで、VBScriptを呼び出す方法でやりたいのですが、このやり方も分かりません。
> 教えていただけませんか?
ここにいくと、いろいろわかりますよ。
http://www.asia.microsoft.com/japan/developer/scripting/maininfo.htm


あるいはカンマ区切りなんだったら、一度ファイルにPrint # で吐き出して、
それをInput #すれば、一つずつ取得できますよ。
# カンマ以外の内容が、どんなものなのかにもよるけど。
#5780-0
RE#5776:文字列の分割方法を教えて下さい
> 素早い回答、ありがとうございます。
> 私はVB5を使ってますので、Split関数は標準では使えないようです。

だったら、速度面から見ても、ソフトの配布の手間を考えても、
InStrで ","を検索して、Midで千切っていくというやり方の方が、
効率がよい気がするのだが…。

VBSのインタプリタ呼び出しの為だけに、わざわざMSScriptを
入れるってのもどうかと思うし。

# まぁ、VBにマクロ機能を搭載できるようになるという意味では、
# 面白いコントロールだとは思うが。
#5787-0
RE#5780:文字列の分割方法を教えて下さい
通りすがり さん、魔界の仮面弁士 さん、MaOh さん、
ありがとうございます。

>通りすがり さん
そうですね、先に書いておくべきでした。(^_^;)
Input#の方法は、今回ターゲットとなる文字が10数文字しかないため、
それをわざわざファイルにして読み込むのはマイナス面が大きいと思いますので、
今回は別の方法で行こうと思います。

>魔界の仮面弁士 さん
具体的なソースコードを教えていただいてありがとうございます。
なるほど、こうやって書くんですね。
VBScriptをちょっとかじってみようかと思いましたが、
今、ちょっと時間がなくて、今回はパスします・・・。
ごめんなさい。

>MaOh さん
> だったら、速度面から見ても、ソフトの配布の手間を考えても、
> InStrで ","を検索して、Midで千切っていくというやり方の方が、
> 効率がよい気がするのだが…。

え゛、そうなんですか?(^_^;)
instr+Midでやった方が効率がいいとはちょっと意外でした。

今回は、instr+Midで行こうと思います。
ありがとうございました。m(_ _)m
#5790-0
RE#5787:文字列の分割方法を教えて下さい
>> だったら、速度面から見ても、ソフトの配布の手間を考えても、
>> InStrで ","を検索して、Midで千切っていくというやり方の方が、
>> 効率がよい気がするのだが…。
> え゛、そうなんですか?(^_^;)
> instr+Midでやった方が効率がいいとはちょっと意外でした。

(InStr+Midでのコーディング方法にもよるが、)
VBSのSplit自体は、InStr+Midよりも高速に動作する事が多い。

ただ、VBからそれを呼び出すのであれば、MSScriptControlのロード時間と、
インタプリタの解釈にかかる時間が、Splitの処理時間にプラスされるため、
結果としては遅くなってしまう可能性が高い。

# まぁ、最近のPCであれば、速度差は微々たる物だが。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)