Gambas/String Manipulation
String Concatenation
editThe concatenation operator represented by an ampersand symbol is used to join two strings together:
DIM bestclub AS String
bestclub = "Liverpool" & " Football Club" ' Liverpool Football Club
The addition operator cannot be used to concatenate strings
editIn gambas, unlike traditional basic, the plus symbol cannot be used as concatenation operator. If an attempt is made to use a plus symbol for this purpose, a type mismatch error will occur when an attempt is made to run the program:
' This does not work in gambas
PRINT "I have 3 cats" + " and 2 dogs" ' You cannot concatenate strings by using a plus symbol
Concatenation combination assignment operator
editThe concatenation combination assignment operator represented by a andequals symbol, can also be used to concatenate strings:
DIM breakfast AS String
breakfast = "bacon"
breakfast &= " and eggs" ' breakfast = breakfast & " and eggs" (using the andequals symbol)
Search and Replace
edithello i have made a try to search in a text file -two function : 1- search by line and column 2-search by pos
-first function returns an array with results it will be for example like this ["1,12" , "2,1"] , the first element is the line the second is the column
-second function returns also an array but single one ex:[1,2,45,455] every element is the string pos
here you are ! :
AUTHOR: abom
MAIL: abom@linuxac.org
----
STATIC PUBLIC SUB searchfile(filename AS String, strser AS String) AS String[]
DIM icounter AS Integer, fn AS stream, ln AS String, wpos AS Integer, rstr AS NEW String[]
DIM spos AS Integer
icounter = 0
IF Exist(filename) THEN
fn = OPEN filename FOR READ
WHILE NOT Eof(fn)
LINE INPUT #fn, ln
icounter = icounter + 1
IF strser = "" THEN RETURN
spos = 0
wpos = 0
DO
wpos = InStr(ln, strser, spos, gb.Text)
IF wpos <> 0 THEN
spos = wpos + Len(strser)
rstr.add(icounter & "," & wpos)
END IF
LOOP UNTIL (wpos = 0)
WEND
END IF
RETURN rstr
END
----
STATIC PUBLIC SUB searchfilebypos(filename AS String, strser AS String) AS String[]
DIM icounter AS Integer, fn AS stream, txt AS String, wpos AS Integer, rstr AS NEW String[]
DIM spos AS Integer
icounter = 0
IF Exist(filename) THEN
wpos = 0
spos = 0
txt = file.Load(filename)
IF strser = "" THEN RETURN
DO
wpos = InStr(txt, strser, spos, gb.Text)
IF wpos <> 0 THEN
spos = wpos + Len(strser)
rstr.add(wpos)
END IF
LOOP UNTIL (wpos = 0)
END IF
RETURN rstr
END