Tip Corner:
This month we have a function for character replacement for the tip corner.
This originates from a message posted on the Liberty Basic forum. Someone was looking for a solution to a problem. They said I am storing a directory listing in a string and some of these directories have spaces in them like:
Cars & Bikes
I need to take out these spaces and make the string = Cars&Bikes
So, here is some code that I offer to accomplish the task. I have made the replacement task is a simple function that is reusable. I have tried to get enough comments in there so that you can tell what is happening.
a$ = "Cars & Bikes"
'remove any spaces and replace with null string
b$ = replaceChar$(a$, asc(" "), 0)
print a$
print b$
a$ = "Cats & Dogs"
'replace any ampersand with a space
b$ = replaceChar$(a$, asc("&"), asc(" "))
print a$
print b$
'replace any space with an ampersand
a$ = "This is my string"
b$ = replaceChar$(a$, asc(" "), asc("&"))
print a$
print b$
input c$
function replaceChar$(source$, asciiFind, asciiReplace)
'function will search a string for the ascii value supplied
'in asciiFind and replace all accurances with the ascii value
'found in asciiReplace - use of ascii values supports non-
'printable characters.
'find length of source string
sLen = len(source$)
work$ = ""
'make sure we don't have a zero length string
if sLen > 0 then
'now scan for spaces using a while loop
curPos = 0
while 1 = 1
'increment position counter
curPos = curPos + 1
'see if we are at end of string
if curPos > sLen then Exit while
'see if this is a string value to replace
if asc(mid$(source$,curPos,1)) = asciiFind then
'if the replacement value is zero the remove the character
if asciiReplace > 0 then
work$ = work$ + chr$(asciiReplace)
end if
else
work$ = work$ + mid$(source$,curPos,1)
end if
wend
end if
'now return a value
replaceChar$ = work$
end function
Notice that the function takes a source string and then two numeric values. The numeric variables are ASCII values for the character you want to replace and what to replace it with. Use the LB function ASC to find ASCII values of characters. If you want to replace a character with a NULL then pass 0 (zero) as the last argument. I decided to allow ASCII values because it allows greater functionality.