文字列中のある文字の個数を求める方法は?

解決


町や空に  2009-04-27 19:21:40  No: 141884  IP: 192.*.*.*

文字列中のある文字の個数を求める方法は?

  例えば「abc,def,ghi」という文字列中の文字「,」の個数を,苦労して下記の方法によって求めています。しかし,もっと簡単に例えば ChrCount(A,",")のような関数がありませんか。御教示下さい。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As String
        A = "abc,def,ghi"
        Dim i, n As Integer
        
        For i = 1 To Len(A)
            A = Mid$(A, InStr(A, ",") + 1) 'A中に「,」を見つけたら置き換える
            n = n + 1 '位置をup
            If InStr(A, ",") = 0 Then Exit For '「,」が無くなれば検索終わり
        Next
        MsgBox(Str(n)) '結果の確認
    End Sub

編集 削除
魔界の仮面弁士  2009-04-27 19:49:19  No: 141885  IP: 192.*.*.*

方法は幾つかありますが、たとえばこんな感じで。


Function ChrCount(ByVal s As String, ByVal delimiter As String) As Integer
  If String.IsNullOrEmpty(s) OrElse String.IsNullOrEmpty(delimiter) Then
    Return 0
  Else
    Return (s.Length - s.Replace(delimiter, "").Length) \ delimiter.Length
  End If
End Function

編集 削除
町や空に  2009-04-27 20:04:46  No: 141886  IP: 192.*.*.*

魔界の仮面弁士さん御教示ありがとうございました。
これから試行してみます。

編集 削除
町や空に  2009-04-27 20:27:37  No: 141887  IP: 192.*.*.*

下記の方法でうまくいきました。やはりマイクロソフトでは元々出来上がり品としては提供してなかったのですね。
  魔界の仮面弁士さんありがとうございました。簡潔かつ汎用性のある関数で,今後利用させて頂きます。

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n As Integer
        n = ChrCount("abc,def,ghi", ",")
        MsgBox(Str(n))
    End Sub

    Function ChrCount(ByVal s As String, ByVal delimiter As String) As Integer
        If String.IsNullOrEmpty(s) OrElse String.IsNullOrEmpty(delimiter) Then
            Return 0
        Else
            Return (s.Length - s.Replace(delimiter, "").Length) \ delimiter.Length
        End If
    End Function

編集 削除
町や空に  2009-04-27 20:31:51  No: 141888  IP: 192.*.*.*

↑上の送信で,解決マークを忘れました。ありがとうございました。

編集 削除