Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [Vb6] - Effettuare il replace finite volte

    Salve...
    Sono alla ricerca di un metodo che mi permetta di effettuare un replace in una variabile string non di tutti gli elementi ma solo dei primi 5.

    Es:

    stringa = "a b a c a d a e a f a g a h a"

    se io dovrei sostituire solo le prime 5 "a" e lasciare intatte le successive.. a che stratagemma dovrei ricorrere?
    :sexpulp: V3g4 :sexpulp:

  2. #2
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Prova così:

    codice:
    replacefinoa5 = Replace("a b a c a d a e f a g a h a i", "a", "z", 1, 5)
    
    Replace(stringa,carattere da sostituire,carattere in sostituzione,inizio,quante volte esegue la replace)
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  3. #3
    si .. funziona :quipy: mi sembrava + complicato fare ciò...

    però.. ora scendiamo al complicato. Un passo alla volta sembra la miglior cosa da fare.

    Ora che io effettuo il replace dei primi 5 elementi,
    nel caso avessi + di 1 replace come potrei continuare il conto??

    es:

    stringa = "a b c a b d a b e a b f"

    io effettuo il replace della "a" . in questo caso sono presenti 4 elementi.

    poi effettuo un'altro replace che sostituisca la "b".
    la mia necessità è sempre quella di prendere 5 elementi totali quindi dovrei prendere 1 solo elemento "b".


    La cosa è diventata un po complessa ma aggirabile? o ..

    Questo è il vero dilemma :mavieni:
    :sexpulp: V3g4 :sexpulp:

  4. #4
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Allora di ciò che hai detto ho capito(credo) che tu devi fare 5 replace, essendoci 4 "a" tu vuoi fargli fare anche la quinta in questo caso la "b"!
    Se ciò che dico è giusto allora ti domando da dove arriva l'informazione che la lettera su cui fare la replace mancante (dopo aver eseguito le prime 4 sulla lettera "a") è la "b"?

    P.S. Ho provato ad essere il più chiaro possibile!
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  5. #5
    forse è bene spiegare un po il caso e a cosa serve

    Ci troviamo in un messenger (una chat). Le simpatiche emoticons che appaiono quando si scrive la combinazione es: : ) (come le emoticons di questo forum) hanno un problema.
    Il problema sta nel fatto che se si crea un floader di tante di queste faccine.. il client della povera vittima va in panne e non ce la fa + a visualizzarne tutte andando in blocco totale...
    ... i soliti lamerini da strapazzo hanno capito il giochino ...


    Quello a cui voglio arrivare è che in un testo vengono eseguite solo 5 faccine e le altre rimangano semplice testo. Le faccine sono + di un tipo.. e quindi ci sono + cicli di replace.

    Spiegato un po meglio? :master:
    :sexpulp: V3g4 :sexpulp:

  6. #6
    immagino che l'elenco delle faccine da rimpiazzare sia in un array (se cosi' non fosse, rimedia). quindi sara' sufficiente eseguire l'operazione di replace "limitata" all'interno del ciclo che scorre l'array delle faccine

  7. #7
    potresti farmi un esempio di come intendi tu?
    please
    :sexpulp: V3g4 :sexpulp:

  8. #8
    :quote:
    :sexpulp: V3g4 :sexpulp:

  9. #9
    risolvi così la questione...
    ti crei due array il primo con il codice della faccina ad esempio :-@ e l'altro con il codice ke vuoi sostituire, sincronizzando i due array...in modo da avere allo stesso indice la stessa faccina...
    poi fai un ciclo sulla stringa e fai un replace di 1 volta sulla prima faccina trovata....

    ti posto un po'di codice (bozza,sono senza editor, di sicuro faro errori di sintassi, ma il concetto è quello ke conta)
    codice:
    array1={":)",":(",":P",":O")}
    array2={"image1","image2","image3","image4"} ' o comunque un codice
    
    messaggio="bla bla bla :) asds :P bla bla"
    
    do
        trovata=false
        for a=0 to ubound(array1)
            if instr(messaggio,array1[a])>0 then
               trovata=true
               messaggio=replace(messaggio,array1[a],array2[a])
               sostituite=sostituite+1
               exit for
            end if
        next a
        if sostituite>5 then trovata=false 'imposti l'uscita dal ciclo...
    loop while trovata
    dovrebbe andare...
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  10. #10
    Direi che manca qualcosa:
    codice:
    messaggio=replace(messaggio, array1(a), array2(a), 1, 1)
    comunque gli indici in vb vanno tra parentesi tonde, non quadre.



    edit:
    Anche il ciclo va rifatto a questo punto, io lo metterei così (non l'ho provato):
    codice:
    i = 0
    
    for a=0 to ubound(array1)
         Do While instr(messaggio,array1[a])>0 or i<8
             messaggio=replace(messaggio, array1(a), array2(a), 1, 1)
             i = i + 1
         loop
         if  i > 7 then exit for
     next a
    xxx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.