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

解決


町や空に  2009-04-28 04:21:40  No: 141884

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

  例えば「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-28 04:49:19  No: 141885

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

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-28 05:04:46  No: 141886

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


町や空に  2009-04-28 05:27:37  No: 141887

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

   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-28 05:31:51  No: 141888

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


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




  


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