string arrays

Previous topic - Next topic

didi

Hier mal ein Teil von dem was ich bisher programmiert haben - soll mal für alles mögliche verwendet werden .

String-Array-Funktionen :

Code (glbasic) Select
// --------------------------------- //
// Project: text-tool-box
// Start: Saturday, January 02, 2010
// IDE Version: 7.203
// www.dmemos.de  January 02, 2010


GLOBAL fok%, digit$, lowercase_letter$, uppercase_letter$, letter$, whitespace$
GLOBAL punctuation$, brackets$, operators$, specialchars$
GLOBAL anarray$[], astring$, anotherstring$

minit() // default settings

astring$ = "Silbermond"
explode_to_chars( astring$ , anarray$[] )
PRINT "explodes a string to a char-array " , 0, 0
PRINT "input : " + astring$ , 0, 15
print_array( anarray$[] )

PRINT "implodes a char- or string array to a string " , 0, 0
anotherstring$ = implode_to_string$( anarray$[] )
PRINT anotherstring$ , 0, 15
SHOWSCREEN
MOUSEWAIT

astring$ = "an,alle,Krieger,des,Lichts,steht,auf,steht,alle,auf"
make_array_from_list( anarray$[], astring$ , ","  )
PRINT "makes an array out of a list in a string", 0, 0
PRINT "input: " + astring$ , 0, 15
print_array( anarray$[] )

sort_string_array_casesensitive( anarray$[] )
PRINT "sorts the strings in an array casesensitive", 0, 0
print_array( anarray$[] )

sort_string_array_lowercase( anarray$[] )
PRINT "sorts the strings in an array and changes to lowercase", 0, 0
print_array( anarray$[] )

astring$ = "an,alle,Krieger,des,Lichts,steht,auf,steht,alle,auf"
make_array_from_list( anarray$[], astring$ , ","  )
sort_string_array( anarray$[] )
PRINT "sorts the strings in an array not casesensitive", 0, 0
print_array( anarray$[] )

unify_string_array( anarray$[] )
PRINT "unifys the strings in a sortd array - deletes duplicates", 0, 0
print_array( anarray$[] )

PRINT " BYE ! " , 0, 0
SHOWSCREEN
MOUSEWAIT

END

FUNCTION print_array: marray$[]
LOCAL i%
    lenarr = LEN( marray$[] )

    FOR i% = 0 TO  lenarr-1
     PRINT "i: " + i + " " + marray$[i%], 0, (i%*15)+30
    NEXT

    SHOWSCREEN
    MOUSEWAIT

ENDFUNCTION // PRINT_ARRAY

FUNCTION element_of_string: x$, string$
// returns TRUE if x$ is element of string
    IF INSTR( string$, x$ ) = -1
     RETURN FALSE
    ELSE
     RETURN TRUE
    ENDIF

ENDFUNCTION // ELEMENT_OF_STRING

FUNCTION element_of_array: x$, marray$[]
// returns TRUE if x$ is element of array
    LOCAL lenarr%, i%
    lenarr = LEN(marray$[])

    FOR i= 0 TO lenarr-1
      IF marray$[i] = x$
        RETURN TRUE
      ENDIF
    NEXT

    RETURN FALSE

ENDFUNCTION // ELEMENT_OF_ARRAY

FUNCTION element_of_list: x$, string$ , separator$
    // returns TRUE if x$ is element of list
    // list representeted in string$, where elements are separated
LOCAL marray$[]

IF separator$ = ""
  separator$ = " "
ENDIF

    SPLITSTR( string$, marray$[], separator$)

    RETURN element_of_array( x$, marray$[] )

ENDFUNCTION // ELEMENT_OF_LIST

FUNCTION make_array_from_list: marray$[], string$, separator$
    // makes array of list
    // list representeted in string$, where elements are separated
    // by default with  " " space , or any other one or more chars in

IF separator$ = ""
  separator$ = " "
ENDIF

    SPLITSTR( string$, marray$[], separator$)

ENDFUNCTION // MAKE_ARRAY_FROM_LIST


FUNCTION minit:

digit$ = "0123456789"
lowercase_letter$ = "abcdefghijklmnopqrstuvwxyz"
uppercase_letter$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letter$ = lowercase_letter$ + uppercase_letter$
whitespace$ = " " + CHR$(9) + CHR$(13) + CHR$(10)  // SPACE,TAB,CR,LF
punctuation$ = ".,:;!?'" + CHR$(34) // and "
brackets$ = "()[]{}"
operators$ = "+-/*^<>="
specialchars$ = "Ã,§$%&@"

fok% = SETCURRENTDIR("c:\\glbasic\\glbasic")
LOADFONT "FontCourier8x16.png", 1
SETFONT 1

ENDFUNCTION // MINIT


FUNCTION  explode_to_chars: in$, marray$[]
   LOCAL lenin%, i%
   // by reference marray$[]

   lenin%= LEN(in$)
   REDIM marray$[lenin]

   FOR i% = 0 TO lenin%-1
     marray$[i%] = MID$( in$, i% , 1 )
   NEXT

   RETURN lenin%

ENDFUNCTION // explode_to_chars$


FUNCTION implode_to_string$: marray$[]
   LOCAL x$, lenin%, i%

   x$=""
   lenin% = LEN(marray$[])

   FOR i% = 0 TO lenin-1
     x$ = x$+ marray$[i%]
   NEXT

   RETURN x$

ENDFUNCTION // implode_to_string$


FUNCTION sort_string_array_casesensitive: marray$[]

  SORTARRAY marray$[] , 0

ENDFUNCTION // sort_string_array_casesensitive


FUNCTION sort_string_array_lowercase: marray$[]
   LOCAL x$, lenin%, i%

   x$=""
   lenin% = LEN( marray$[])

   FOR i% = 0 TO lenin-1
     marray$[i%] = LCASE$( marray$[i%] )
   NEXT

   SORTARRAY marray$[] , 0

ENDFUNCTION // sort_string_array_lowercase

FUNCTION sort_string_array:  marray$[]
   LOCAL h$, n%, i%, j%, k%
   // Bubblesort
   h$ = ""
   n = LEN(marray$[]) - 1
   i = 0
   j = 0

   FOR i = 0 TO n
     FOR j = n TO i%+1 STEP -1
      IF UCASE$(marray$[i])  > UCASE$(marray$[j])
       h$ = marray$[i]
       marray$[i] = marray$[j]
       marray$[j] = h$
      ENDIF
    NEXT
   NEXT

   h$ = ""

ENDFUNCTION //sort_string_array

FUNCTION unify_string_array:  marray$[]
  LOCAL lenin%, i%, j%, fDbl%
  lenin%= LEN(marray$[])
  // unify - every string only once - delete duplicates - redim array
  i% = 1 // first possible string duplicate
  j% = 0 // first char
  fDbl%= FALSE

  FOR i=0 TO lenin%-2
    IFmarray$[i] = marray$[i+1]
      fDbl = TRUE
    ELSE
      j = j+1
    ENDIF
    IF fDbl=TRUE
    marray$[j]  =  marray$[i+1]
    ENDIF
  NEXT

  j = j+1
  REDIM marray$[j]
  RETURN j


ENDFUNCTION // unify_strings_in_inout





PS :  bin mir nicht sicher wo ich das am besten posten sollte

BumbleBee

Quote
  bin mir nicht sicher wo ich das am besten posten sollte

Könntest es ja zum Beispiel dann in den Codeschnipsel Bereich rein tun.  =D

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit