VB.NET 文字列の中に文字が何個あるのか見つけるFunctionは?

解決


VB.NET勉強  2005-08-13 22:22:41  No: 91476

TextBox2の文字列に、TextBox1で入力した単語が何個含まれているのかを返すFunctionを考えているのですがどうも上手くいきません。

Public Function CntStr(txt1 as string, txt2 as string) as long
Dim i as long
Dim j as long
Dim k as long

  k = txt2.length
  i = 1
  j = 0
  do
    i = txt2.IndexOfinstr(txt1)
    if i > 0 then
     i = i + k
     j = j + 1
    end if
  loop until i = 0

  CntStr = j

end Function


030  2005-08-13 22:50:15  No: 91477

うまくいかないときは、まず自分の考えたロジックに基づき
入力された値から、どのように内部で処理されるのかを
机上で考え、何かに書いておきましょう。

その上で、プログラムをステップ実行し、それぞれのパラメータの
動きから、どこで自分の考えたロジックと異なる動きをしている
のかを見つけます。

その箇所が分かれば、次に何故そうなるのかを考えます。

以上のプロセスを完了すれば「うまくいかない」ところが
うまくいくようになると思いますよ。


通ってみた  2005-08-14 03:09:39  No: 91478

.Netの事はわからないんだけど、
無限ループになる気がするのは自分だけですか?

txt2の内容が変わらなければ一生同じ値を吐き出しつづけるのではないかと
i > 0ならば、先頭のいらない部分を切り取ってループに戻るのが正解ではないかと

もしくはSplitしちゃうとか


ねろ  2005-08-14 04:14:59  No: 91479

色々とおかしいところは有るようですが、オリジナルコード
を尊重して、添削すると
    Dim i As Integer = 0
    Dim j As Integer = 0
    Dim k As Integer = txt1.Length
    Do
         i = txt2.IndexOf(txt1, i)
         If i >= 0 Then
              i = i + k
              j = j + 1
          End If
    Loop Until i < 0
    Return j
こんなかな。


VB.NET勉強  2005-08-14 06:18:25  No: 91480

どうも有り難うございました!出来ました。


VB.NET勉強  2005-08-14 06:18:32  No: 91481

どうも有り難うございました!出来ました。


VB.NET勉強  2005-08-14 06:18:36  No: 91482

どうも有り難うございました!出来ました。


VB.NET勉強  2005-08-15 11:14:05  No: 91483

さらに質問です。大文字、小文字(アルファベット)の入力できちんと区別されてカウントされるのですが、これを区別なしでカウントする方法は?
例えばcをCCcの中から見つけると3となるようにしたいのです。デファルトでは、1と返ってきます。IgnoreCaseとかなのでしょうか?


さるべーじ  2005-08-15 19:57:55  No: 91484

[[解決]]をつけ、さらに追加質問をする場合は
別に新規で質問を起こした方がいいですよ。
このスレッドに追加しても、たぶんあまり見てもらえませんし、
あとからログ参照をする人にとっても探しにくい状態に
なってしまいますので。


通ってみた  2005-08-16 06:02:25  No: 91485

単純に大文字なり小文字なりに変換して調べればいいのでは?


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

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






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