文字列中のある文字の個数を求める方法は?
例えば「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
方法は幾つかありますが、たとえばこんな感じで。
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
魔界の仮面弁士さん御教示ありがとうございました。
これから試行してみます。
下記の方法でうまくいきました。やはりマイクロソフトでは元々出来上がり品としては提供してなかったのですね。
魔界の仮面弁士さんありがとうございました。簡潔かつ汎用性のある関数で,今後利用させて頂きます。
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
↑上の送信で,解決マークを忘れました。ありがとうございました。
編集 削除