Newsgroup: it.comp.lang.visual-basic
Titolo: separare le parole in un testo

se ho un file di testo, come posso mettere in una variabile prima la prima
parola, poi la seconda eccetera? (mi serve per cercare tutte le parole che
contengono una data stringa)
es: file pippo.txt:
"luca, via Roma 3
  andrea, via Rometti 4
Romolo, via Tizio Caio 89"
dim x as string
do
QualcheStranaCosaCheMetteLaParolaInX
if "Rom" in x  then list1.additem x
QualcheStranaCosaPerPassareAllaParolaSuccessiva
loop
e il risultato in list1 dovrebbe essere
Roma
Rometti
Romolo
grazie e ciao
Francesco Mapelli (
mape...@tin.it
)
http://members.xoom.com/Francesco
Sito comune di programmatori VB
http://members.xoom.com/it_lang_vb




http://members.xoom.com/it_lang_vb
Potresti usare... la mia funzioncina GetToken!!! Heheheheh vecchia, e non la
rivedo da tanto (č tutto fuorché ottimizzata, ma ha +10 anni!), ma funzia.
La "If ROM in X" in VB si risolve con la InStr (vd. Help).
Basta quindi un loop, come avevi pensato, e tutto si risolve.
Dim n as Integer
Dim s as String
gsSource = "Stringa da analizzare, anche multiline (ovvero, con 0D0A al suo
interno) etc etc."
n=0
s = GetToken(gsSource)                'Inizializza la stringa di loop
Do While s <> ""
    'Fai quel che vuoi col token (nel tuo caso If Instr( etc etc. )
    n=n+1                                          'Incrementa il puntatore
di next token
    s=GetToken(gsSource, n)        'Legge il token successivo (ev. ritorna
"")
Loop
Bye. BC
'***************************************************************************
*****************
' Function GetToken (ByVal sSource As String, Optional ByVal iTokenNum As
Integer = 1, Optional ByVal sSeparator As String = " ") As String
'
' Dev. Date: 0.1       ?      Claudio de Biasio
' Dev. Date: 1.0    1/2/95      Claudio de Biasio  (VB re-coding)
' Rev. Date: 1.1    5/1/98      Claudio de Biasio   VB5 Optional Parameters
update
'            1.2    3/5/98      Claudio de Biasio   Multi-Char separators
[BC2]
'
' Function that returns the iTokenNum'th token from sSource using
' sSeparator as tokenizer. We'll assume the 1st token starts form 1st char
' and ends with 1st tokenizer, excluded.
'
' Ex. ? GetToken("Zio pippolone va in vacanza", 1, " ")
'     >Zio<
'     ? GetToken("Zio pippolone va in vacanza")             'Assume 1 e " "
'     >Zio<
'     ? GetToken("Zio pippolone va in vacanza", 4)          'Assume " "
'     >in<
'     ? GetToken("Zio pippolone va in vacanza", 2, "a")
'     > in v<
'     ? GetToken("Zio pippolone va in vacanza", 4, "a")
'     >nz<
'
'***************************************************************************
*****************
'
Function GetToken(ByVal sSource As String, Optional ByVal iTokenNum As
Integer = 1, Optional ByVal sSeparator As String = " ") As String
    Dim nStart As Integer
    Dim nEnd As Integer
    Dim nTokLen As Integer
'[BC2]
    nTokLen = Len(sSeparator)
    If (Left$(sSource, nTokLen) <> sSeparator) Then sSource = sSeparator &
sSource      '[BC2]
    If (At(sSource, sSeparator, iTokenNum) = 0) Then
        GetToken = ""
        Exit Function
    End If
    nStart = At(sSource, sSeparator, iTokenNum) + nTokLen
'[BC2]
    nEnd = nStart + 1
    Do While (nEnd <= Len(sSource) And Mid$(sSource, nEnd, nTokLen) <>
sSeparator)      '[BC2]
        nEnd = nEnd + 1
    Loop
    GetToken = Mid$(sSource, nStart, nEnd - nStart)
End Function
Ti devo dare anche la At, che viene usata da GetToken:
'***************************************************************************
*****************
' Function At(ByVal sSource As String, ByVal sToken As String, Optional
ByVal nCounter As Integer = 1) As Integer
'
' Dev. Date: 1.0    10/12/94    Claudio de Biasio
' Rev. Date: 1.1    6/10/97     Claudio de Biasio   VB5 Optional parameter
'
' Function that returns the position of nCounter'th occurence of sToken in
sSource.
' Emulates AT function of xBase dialects.
'
' Ex. ? At("Zio pippolone va in vacanza con nonno Pippotto", "ippo" [, 1])
'     6
'     ? At("Zio pippolone va in vacanza con nonno Pippotto", "ippo", 2)
'     40
'     ? At("Zio pippolone va in vacanza con nonno Pippotto", "ippo", 3)
'     0
'***************************************************************************
*****************
'
Function At(ByVal sSource As String, ByVal sToken As String, Optional ByVal
nCounter As Integer = 1) As Integer
    Dim nCtr As Integer
    Dim nPtr As Integer
    nPtr = 0
    For nCtr = 1 To nCounter
        nPtr = InStr(nPtr + 1, sSource, sToken)
        If (nPtr = 0) Then Exit For
    Next
    At = nPtr
End Function

Potresti usare... la mia funzioncina GetToken!!!
ti ringrazio moltissimo, è proprio quello che mi serviva!! :-))
ciao e grazie ancora
Francesco Mapelli (
mape...@tin.it
)
http://members.xoom.com/Francesco
Mousestats, il contachilometri per il mouse:
http://members.xoom.com/mousestats
