GetWord Procedure

Share your advanced PureBasic knowledge/code with the community.
BackupUser
PureBasic Guru
PureBasic Guru
Posts: 16777133
Joined: Tue Apr 22, 2003 7:42 pm

GetWord Procedure

Post by BackupUser »

Code updated for 5.20+ (same as StringField())

Restored from previous forum. Originally posted by wayne1.

Code: Select all

;GetWord() returns the word number selected
;string = string to search
;wordNumber = The desired word to return
;delimeter = the character between words, usually a space but it could be anything
;you want or need see examples  

s$ = "red green blue yellow orange white" 
t$ = "red-green-blue-yellow-orange-white" 

Procedure.s GetWord(string.s, wordNumber.w, delimeter.s)
  Protected.w i, space, n
  Protected StringTemp.s = ""
  
  i = 0: space = 0: n = 1
  string + delimeter
  While space < Len(string) 
    space = FindString(string, delimeter, n)
    i + 1
    If i = wordNumber
      stringTemp = Mid(string, n, space - n)
    EndIf
    n = space + 1
  Wend

  ProcedureReturn stringTemp
EndProcedure
 
q$ = GetWord(s$, 3, " ")
MessageRequester("Word #3 string s$", q$, 0)
q$ = GetWord(s$, 5, " ")
MessageRequester("Word #5 string s$", q$, 0)

q$ = GetWord(t$, 2, "-")
MessageRequester("Word #2 string t$", q$, 0)
q$ = GetWord(t$, 4, "-")
MessageRequester("Word #4 string t$", q$, 0)