Gambas/String Manipulation

String Concatenation

edit

The 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

edit

In 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

edit

The 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

edit

hello 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