PDA

Visualizza versione completa : "SOTTRAZIONI" TRA STRINGHE IN VB 6.0


radial85
05-09-2004, 15.25.50
E' possibile in Visual Basic 6.0 fare delle "sottrazioni" fra stringhe?
Forse con un esempio mi spiego meglio....

Stringa1=Ciao come va
Stringa2=va

Stringa1-Stringa2=Ciao come

Dav82
05-09-2004, 15.31.09
Non conosco VB :D però posso darti qualche dritta che magari si rivela utile (o totalmente fuori strada :D)

Puoi cercare l'inizio della stringa da sottrarre nella stringa più grossa, e di questa più grossa prendi la parte prima dell'inizio e quella dopo l'inizio + la lunghezza della stringa da togliere.

In sostanza:

"Ciao come va oggi amico?"
"va" si trova al carattere 10, per cui prendi i caratteri fino al 9 e poi dal (9+2) = 11. Ripeti questo fino a che non trovi più occorrenze di "va" nella stringa.

Attento a come cerchi il "va" perchè magari c'è la parola "valigia" e tu la mutili senza pietà! In questo caso direi di cercare " va ", con spazio prima e dopo.... ma c'è anche la punteggiature " va," e così via... magari una bella regular expression aiuta! :)

O magari aiuta di più qualcuno che conosce VB! :)

radial85
05-09-2004, 17.04.51
Già... ma come faccio a fare quello che hai detto?? ;)

radial85
05-09-2004, 17.14.26
Forse ci sono, si dovrebbe riuscire con 2 vettori. L'unico problema è: come faccio a prendere il singolo carattere di una stringa?

Dav82
05-09-2004, 17.27.44
Mi spiace non poterti aiutare, di VB non so proprio nulla, neppure queste cose di base sui tipi di dato :(

LoryOne
05-09-2004, 17.54.09
Credo che in Vb6 ci sia l'istruzione remove$.
Credo si possa fare anche con split.

Ad ogni modo:

Public Function Func_RimuoviStringa(ByVal S As String, ByRef S1 As String) As String
'Rimuove da una stringa un suo segmento.
'S Contiene la stringa di ricerca.
'S1 Contiene la stringa di rimozione.
Dim Ty As Long, Yt As Long

Ty = Len(S1)
If Ty Then
Yt = InStr(S, S1)
While Yt
S = IIf(Yt = 1, Mid$(S, Ty + 1), Left$(S, Yt - 1) & Mid$(S, Ty + Yt))
Yt = InStr(S, S1)
Wend
End If: Func_RimuoviStringa = S
End Function

radial85
06-09-2004, 10.30.26
Grazie dell'aiuto. Siccome la parte che dovevo sottrarre era sempre e comunque la parte finale della stringa ci sono riuscito così:

StringaIntera = "Ciao come va"
ParteDaSottrarre = " va"
LungIntera = Len(StringaIntera)
LungSottrarre = Len(ParteDaSottrarre)
LunghezzaRisultato = LungIntera - LungSottrarre
Risultato = Left(StringaIntera, LunghezzaRisultato)

Left preleva i caratteri di una stringa partendo da sx.

LoryOne
06-09-2004, 11.09.40
Ooooooook vaaaaaaaaaaaaaaa bene ! (Y)

NS-1
07-09-2004, 10.38.09
ascolti per caso una radio di Milano?

ooooooooooK vaaaaaaaaaaaaaaaaaaBene... :D

MrVortex
24-09-2004, 11.58.14
Da profano ma non era più semplice scrivere:

k=instr(dovecercare$,cosacercare$)
if k>0 and len(dovecercare$)-len(cosacercare$)<>k then
stringatronca=mid$(dovecercare$,1,k-1)+mid$(dovecercare$,k,len(dovecercare$)-k)
elseif k>0 and len(dovecercare$)-len(cosacercare$)<>k
stringatronca=left$(dovecercare$,len(dovecercare$)-k)
endif

nel primo caso: "sto andando a pescare" "pes"
risultato "sto andando a care"

nel secondo caso:"sto andando a pescare" "pescare"
risulato "sto andando a "

credo che ci siano errori non l'ho provato l'ho fatto a memoria e non posso accertarmene subito perchè ho da fare una presentazione powerpoint per un seminario da presentare per lunedì ed ho tempo solo per le 13:45 di oggi.

Pace a voi.

P.S. "Comunque l'istruzione di ricerca è INSTR"