Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
~ this procedure is used to generate a formatted list with and/or at the end
~ from an inputted delimited string
~
~ Variables
~
~ v_string is our input string which is changed by this procedure
~ v_delim is out list delimiter, unless specified we assume ", "
~ v_andor is the final conjuction used, we assume "and" if not specified
~ v_number is the number of things in our list
~
var v_string as string
var v_delim as string
var v_number as number
var v_andor as string
~
~ Internal variables
~
~ x_len - length of v_string
~ x_lastpos - last position of delimiter
~ x_frontend - after we split the string, this is the front piece
~ x_backend - after we split the string, this is the back piece
~
var x_len as number
var x_lastpos as number
var x_frontend as string
var x_backend as string
~ if we do not have a string, get out
doneif (empty(v_string) <> 0)
~ also if v_number is less than 2, get out
doneif (v_number < 2)
~ set defaults
if (empty(v_delim) <> 0) then
v_delim = ", "
endif
if (empty(v_andor) <> 0) then
v_andor = "and"
endif
~ set length and position variables
x_len = length(v_string)
x_lastpos = lastpos(v_string,v_delim)
~ split our string
x_frontend = left(v_string,x_lastpos)
x_backend = right(v_string,x_len - x_lastpos - length(v_delim))
if (v_number = 2) then
v_string = x_frontend & " " & v_andor & " " & x_backend
elseif (v_number > 2) then
v_string = x_frontend & ", " & v_andor & " " & x_backend
endif
~ this procedure counts now many times a given substring appears in a given string
~
~ VARIABLES
~
~ v_string is our string we are searching through
~ v_search is our substring
~ v_count is how many times v_search appears in v_string
~
var v_string as string
var v_search as string
var v_count as number
~ if we don't have either, get out
doneif (empty(v_string) <> 0)
doneif (empty(v_search) <> 0)
~
~ ALGORITHM
~
~ String S is of length n
~ Search string s is of length m
~ current search string C(i) is a piece of S starting at position i of length m
~ we search left to right taking C piecewise.
~ if we match we increment the count, if not take next search string which is C(i+m+1)
~ this means that last possible position we could have for i is n-m. If we do not
~ match we shift by 1
var x_n as number
var x_m as number
var x_C as string
var x_endPos as number
var x_ii as number
x_n = length(v_string)
x_m = length(v_search)
~ out search string cannot be greater than our starting string
doneif (x_m > x_n)
x_endPos = x_n - x_m
while (x_ii <= x_endPos)
x_C = mid(v_string,x_ii,x_m)
debug "pos: " & x_ii & " - " & x_C
if (compare(x_C,v_search) = 0) then
v_count += 1
x_ii += x_m
else
x_ii += 1
endif
loop