[dba-VB] Count a character in a string

Max Wanadoo max.wanadoo at gmail.com
Sun Apr 13 04:08:59 CDT 2008


John,
You may recall the RegExp that I posted a short while ago.  You can use this
to get the answer.
This code returns 17:

Function CountRegEx()
  Dim strIn As String, lngCount As Long
  strIn = "asdf||||||qwert|zxcv|mnbv|qwert|zxcv|mnbv||||||"
  lngCount = (RegExpTest("\|", strIn))
  MsgBox lngCount
End Function

Here is the original Function
Function RegExpTest(patrn, strng) As Long
' Set reference to Microsoft vbscript regular expressions 5.5
' Cheat Sheet available at http://regexlib.com/CheatSheet.aspx
  Dim RegEx As New VBScript_RegExp_55.RegExp
  Dim Match, Matches, RetStr  ' Create variable.
  Set RegEx = New RegExp   ' Create a regular expression.
  RegEx.Pattern = patrn   ' Set pattern.
  RegEx.IgnoreCase = True   ' Set case insensitivity.
  RegEx.Global = True   ' Set global applicability.
  Set Matches = RegEx.Execute(strng)   ' Execute search.
  RegExpTest = 0
  For Each Match In Matches   ' Iterate Matches collection.
    RetStr = RetStr & "Match found at position "
    RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
    RetStr = RetStr & Match.Value & "'." & vbCrLf
    RegExpTest = RegExpTest + 1
  Next
End Function

HTH
Max 

-----Original Message-----
From: dba-vb-bounces at databaseadvisors.com
[mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of Shamil
Salakhetdinov
Sent: Sunday, April 13, 2008 3:30 AM
To: 'Discussion concerning Visual Basic and related programming issues.'
Subject: Re: [dba-VB] Count a character in a string

Hi John,

My bet that this code will be the most speedy in .NET (C# sample):

int count = 0;
for (int index = 0; index < s.Length; index++)
  if ((s[index] ^ '|') == 0) count++;

--
Shamil
 

-----Original Message-----
From: dba-vb-bounces at databaseadvisors.com
[mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Sunday, April 13, 2008 12:24 AM
To: VBA
Subject: [dba-VB] Count a character in a string

I do a lot of CSV stuff.  One of my file suppliers gives me files that throw
an error when I try to import them and so I am writing tools to try and
troubleshoot these files.  I need to be able to count the times that the
field separator character is contained in a line.  The error I am getting
says the line is too long but I have determined that is not the case.  I
suspect that perhaps the field separator character is in the line too often.

So, if I have a line that looks like:

asdf|qwert|zxcv|mnbv

Other than just iterating through the string character by character, is
there a way to get a count of the | character in the string?
--
John W. Colby
www.ColbyConsulting.com
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com

_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com




More information about the dba-VB mailing list