文字列から文字を検索

解決


初心者です  2005-08-24 01:25:38  No: 91727

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


さるべーじ  2005-08-24 02:31:43  No: 91728

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


初心者です  2005-08-24 02:39:22  No: 91729

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


Blue  2005-08-24 02:44:59  No: 91730

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


いな  2005-08-24 03:03:43  No: 91731

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

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


初心者です  2005-08-24 03:22:00  No: 91732

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


Blue  2005-08-24 03:28:39  No: 91733

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

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

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


初心者です  2005-08-24 03:38:03  No: 91734

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


通ってみた  2005-08-24 04:10:20  No: 91735

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


あん  2005-08-24 04:14:17  No: 91736

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

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


初心者です  2005-08-24 04:21:04  No: 91737

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

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

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


...  2005-08-24 04:30:15  No: 91738

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

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

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


  2005-08-24 05:20:41  No: 91739

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


・・・  2005-08-24 06:40:27  No: 91740

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


VB2分前にはじめました。  2005-08-24 06:42:04  No: 91741

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-24 07:08:55  No: 91742

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


LESIA  2005-08-24 14:17:10  No: 91743

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


いな  2005-08-24 18:41:00  No: 91744

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

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


あん  2005-08-24 22:11:49  No: 91745

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

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


あん  2005-08-24 22:18:05  No: 91746

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


VB2分前にはじめました。  2005-08-25 07:20:38  No: 91747

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


ガッ  2005-08-25 07:50:15  No: 91748

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


ねろ  2005-08-25 18:12:24  No: 91749

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


あん  2005-08-25 21:36:59  No: 91750

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加