文字列から文字を検索

解決


初心者です  2005-08-23 16:25:38  No: 91727  IP: [192.*.*.*]

すいません初心者なのですが
変数の中にテキストボックスから文字列をいれてその中に何個改行があるかって
調べられますか?
自分で調べてもよくわからりませんよろしくお願いします。

編集 削除
さるべーじ  2005-08-23 17:31:43  No: 91728  IP: [192.*.*.*]

まっとぅな方法としては、Instrとループ使ってvbCrLfの個数をカウントするとか。
手抜きの方法としては、vbCrLfでSplit関数使ってできた配列のUBoundを撮るとか。

編集 削除
初心者です  2005-08-23 17:39:22  No: 91729  IP: [192.*.*.*]

さるべーじさん即答ありがとうございます!
>Instrとループ使ってvbCrLfの個数をカウントするとか
って具体的にどうやるんですか?

編集 削除
Blue  2005-08-23 17:44:59  No: 91730  IP: [192.*.*.*]

> って具体的にどうやるんですか?
まずヘルプを使って調べてみてください。
ここで直で聞くよりもあなたのためになるし、早いです。

編集 削除
いな  2005-08-23 18:03:43  No: 91731  IP: [192.*.*.*]

ってか、最近このての質問が
乱立してるので
夏休みの課題とみてまず間違いないな

自分で課題をやらないのはかまわないですがせめて、さがしてください

編集 削除
初心者です  2005-08-23 18:22:00  No: 91732  IP: [192.*.*.*]

Blue さんご返答ありがとうございます
>まずヘルプを使って調べてみてください
もっともだとおもいまして
InStr(logvbCrLf, strMojiretu, vbCrLf)
って作ってみたのですが
改行が一個しかないのに6がかえってきてしまいます・・・
やっぱり勉強不足でしょうか?
補足がありましたらお願いします。
ちなみにいつループを使うのかよくわかりません

編集 削除
Blue  2005-08-23 18:28:39  No: 91733  IP: [192.*.*.*]

> 改行が一個しかないのに6がかえってきてしまいます・・・
ほんとによんだのかなぁ。。。

InStrの戻り値は何であるって書いてありますか?

InStrの第1引数(Start)は検索の開始位置ですから、、、

編集 削除
初心者です  2005-08-23 18:38:03  No: 91734  IP: [192.*.*.*]

dim logvbCrLf    as long
dim strMojiretu  as string
dim A as long
logvbCrLf = 1
A = InStr(logvbCrLf, strMojiretu, vbCrLf)
で6個目に改行が入っているのはわかったんですが
たとえば二個三個とあった場合はどのようにループを回せば取得できるのですか?
説明へたくそですいませんです
よろしくお願いします。

編集 削除
通ってみた  2005-08-23 19:10:20  No: 91735  IP: [192.*.*.*]

ヒント:6個目に改行があった=6個目より前はもういらない

編集 削除
あん  2005-08-23 19:14:17  No: 91736  IP: [192.*.*.*]

>で6個目に改行が入っているのはわかったんですが
じゃ
次の改行は何個目かを出す方法をかんがえてみましょう
そして
その次の改行は何個目かを出す方法をかんがえてみましょう
    :
    :

これを繰り返すのですが  これをいちいち書かなくてもいい方法を
考えましょう。
あと改行の数を出す方法も考えましょう。

編集 削除
初心者です  2005-08-23 19:21:04  No: 91737  IP: [192.*.*.*]

みなさん本当にありがとうございます。

logvbCrLf = 1
Do Until 0 = InStr(logkaishi, strMojiretu, vbCrLf)
 logkaishi = InStr(logkaishi, strMojiretu, vbCrLf)
 logkaishi = logkaishi + 1
 logKaigyou = logKaigyou + 1    
Loop

で多分いけたと思うのですがどうでしょうか?
採点していただけるとありがたいです。

編集 削除
...  2005-08-23 19:30:15  No: 91738  IP: [192.*.*.*]

>ほんとによんだのかなぁ。。。

読んではいません。
これは、正しい日本語では眺めたといいます。

>採点していただけるとありがたいです。
初心者ではなく、これでは怠け者です。

編集 削除
 2005-08-23 20:20:41  No: 91739  IP: [192.*.*.*]

>で多分いけたと思うのですがどうでしょうか?
実行してみれば分かることでは?
実行を他人に任せるのが初心者の特権ですか?

編集 削除
・・・  2005-08-23 21:40:27  No: 91740  IP: [192.*.*.*]

もちろん初心者の特権です。
http://glossary.tank.jp/t004C.html

編集 削除
VB2分前にはじめました。  2005-08-23 21:42:04  No: 91741  IP: [192.*.*.*]

Dim I As Integer
Dim IntStart As Intger
Dim IntCount As Integer
Dim Str As String

Do Until InStr(IntStart+1,Str,VbCrLf) = 0
 IntStart = InStr(IntStart+1,Str,VbCrLf)
 IntCount = IntCount+1
Loop

こんなもんすかね

編集 削除
いな  2005-08-23 22:08:55  No: 91742  IP: [192.*.*.*]

この掲示板の一週間前のスレ参照
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200508/05080078.txt

編集 削除
LESIA  2005-08-24 05:17:10  No: 91743  IP: [192.*.*.*]

手抜きな方法その1
lngCount = UBound(Split(strText, vbCrLf))
手抜きな方法その2
lngCount = (Len(strText) - Len(Replace(strText, vbCrLf, ""))) / 2

編集 削除
いな  2005-08-24 09:41:00  No: 91744  IP: [192.*.*.*]

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200508/05080096.txt

こっちの過去ログのやり方ですな

編集 削除
あん  2005-08-24 13:11:49  No: 91745  IP: [192.*.*.*]

>+Do Until InStr(IntStart+1,Str,VbCrLf) = 0
> IntStart = InStr(IntStart+1,Str,VbCrLf)
> IntCount = IntCount+1
>Loop

これだと最初に改行(一行目が改行のみ)のときまずいですね
他にもおかしいとこあるかも・・

編集 削除
あん  2005-08-24 13:18:05  No: 91746  IP: [192.*.*.*]

>これだと最初に改行(一行目が改行のみ)のときまずいですね
>他にもおかしいとこあるかも・・
ごめん  こっちはIntStartを1で初期化してないのか・・
しかしInStrを2回呼ぶの抵抗あるなあ

編集 削除
VB2分前にはじめました。  2005-08-24 22:20:38  No: 91747  IP: [192.*.*.*]

>しかしInStrを2回呼ぶの抵抗あるなあ
InStrの概念を理解できると思って書いたんですが余計な真似をしたようで。

編集 削除
ガッ  2005-08-24 22:50:15  No: 91748  IP: [192.*.*.*]

他の場所に誤爆したけど、コチラにも参考URL書いておきます(TT
http://www.gizshare.com/vbtomo/boards/vbhajikari.php?do=spread&num=2884#2888

編集 削除
ねろ  2005-08-25 09:12:24  No: 91749  IP: [192.*.*.*]

意地悪テストとして少なくても、空の文字列と改行だけの
文字列はクリアーしたいな。

編集 削除
あん  2005-08-25 12:36:59  No: 91750  IP: [192.*.*.*]

>意地悪テストとして少なくても、空の文字列と改行だけの
>文字列はクリアーしたいな。
そうですね。
あと
AAAA「改行」BBBB  も
AAAA「改行」BBBB「改行」も
行数なら2に本当はしないといけないと思うけど
今回は「改行」の数だからいいのかな?

編集 削除