Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Characters in Strings
John,
To get a single character, use Mid. E.g,. Dim C As String C = Mid("abcdefg", 5, 1) will put "e" in C (5th character, length 1)/ I'm used to strings being arrays of characters so this seems mad! Strings in VB/VBA are actually what are called BSTRs, and part of COM/OLE/Automation. See http://msdn2.microsoft.com/en-us/library/ms221069.aspx You can treat them as if they were arrays of characters. You can't use pointers as you do in C/C++. Instead of a point to a character, you use an 1-based index into the string. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com (email address is on the web site) "John Pritchard" wrote in message ... I wanted to read along a string character by character in VB and ended up with a home made function :- Public Function GetChr(ByVal InPutStr As String, ByVal position As Integer) As String If position <= Len(InPutStr) Then GetChr = Right(Left(InPutStr, position), 1) Else GetChr = Chr(0) End If End Function Is there an easier (and more efficient) way than this. I'm used to strings being arrays of characters so this seems mad! |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Characters in Strings
John,
I should have added that you should become familiar with the InStr and InStrRev functions, which are VB/VBA's equivalent of C's strstr function. InStr searches left-to-right and InStrRev searches right-to-left. Both return the 1-based offset (always from the left) of the first character of the search-for string within the search-in string. Both return 0 if the seach-for string is not found. VB/VBA also has a StrComp function which is essentially the same as C's strcmp function, except that you can specify whether the comparison it case-sensitive or case-insensitive. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com (email address is on the web site) "Chip Pearson" wrote in message ... John, To get a single character, use Mid. E.g,. Dim C As String C = Mid("abcdefg", 5, 1) will put "e" in C (5th character, length 1)/ I'm used to strings being arrays of characters so this seems mad! Strings in VB/VBA are actually what are called BSTRs, and part of COM/OLE/Automation. See http://msdn2.microsoft.com/en-us/library/ms221069.aspx You can treat them as if they were arrays of characters. You can't use pointers as you do in C/C++. Instead of a point to a character, you use an 1-based index into the string. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com (email address is on the web site) "John Pritchard" wrote in message ... I wanted to read along a string character by character in VB and ended up with a home made function :- Public Function GetChr(ByVal InPutStr As String, ByVal position As Integer) As String If position <= Len(InPutStr) Then GetChr = Right(Left(InPutStr, position), 1) Else GetChr = Chr(0) End If End Function Is there an easier (and more efficient) way than this. I'm used to strings being arrays of characters so this seems mad! |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
compare strings - highlight characters which are different | Excel Programming | |||
common characters in seperate strings | Excel Discussion (Misc queries) | |||
Lookup strings with ~ and ^ characters | Excel Worksheet Functions | |||
Replacing characters in numeric text strings and SUMming | Excel Discussion (Misc queries) | |||
characters and strings | Excel Discussion (Misc queries) |