Announcement

Collapse

New Sub-Forum

In an effort to help make sure there are appropriate categories for topics of discussion that are happening, there is now a sub-forum for databases and database programming under Special Interest groups. Please direct questions, etc., about this topic to that sub-forum moving forward. Thank you.
See more
See less

String Manipulation Help

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • String Manipulation Help

    What is the easiest way to read and assign each individual word of an ascii text file (with line breaks) as an element of a string array?

    ie: FILE.TXT
    NOW IS
    THE TIME FOR
    ALL GOOD MEN…

    becomes:
    s$(1)="NOW"
    s$(2)="IS"
    s$(3)="THE"
    S$(4)="TIME"


    Thank you in advance.
    -jay

  • #2
    Hi,

    I think the best way is:

    1) read in one line with line input command

    e.g. line input test%,liniein$
    linein$="This is then ..."

    2) look for the first " "=space with the instr command

    3) read the 1. word in with

    4) look for then second " "=space see 2) and so on

    5) till posspace% is 0

    5.5) read in the last word

    6) read in the next linein$... till end

    one example:

    cls
    a$="das ist ein Test"

    poss%=1
    do

    incr poss%,le% 'set the search pos
    '?" - ",poss%
    pos1%=instr(poss%,a$," ") 'search for " "

    '?pos1%,poss%
    if pos1%=0 then 'no more spaces
    'read in the last word there is no space after !
    ?mid$(a$,poss%,(len(a$)-poss%+1))
    exit loop
    end if
    'the first words
    ?mid$(a$,poss%,(pos1%-poss%))
    le%=pos1%-poss%+1 'len of the word
    loop

    hope this helps

    Regards

    Matthias Kuhn

    ------------------

    Comment


    • #3
      Another way would be to use the binary input mode. Example

      dim a$(500) 'or whatever
      open "sometext.txt" for binary as #1
      i = 0
      do until eof(1)
      m$ = ""
      do
      REM * Get a single byte from the input file
      get$ #1,1,t$

      REM * At the end of the input file. Exit loop
      if eof(1) then exit loop

      REM * Exit loop on spaces, C/R or L/F
      if t$ = chr$(32) or t$ = chr$(13) or t$ = chr$(10) then exit loop

      REM * Concan the temporary string
      m$ = m$ + t$
      loop

      REM * The temporary string MAY wind up being NULL. Ignore.
      if m$ <> "" then
      incr i
      a$(i) = m$
      end if

      loop
      close #1


      ------------------
      There are no atheists in a fox hole or the morning of a math test.
      If my flag offends you, I'll help you pack.

      Comment

      Working...
      X