Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [vb.net] replace particolare su stringa

    Data una stringa del tipo

    xxxx#xxxxxxxx#xxxxxxxx#xxxxxxxxxx

    debbo sostituire tutte le ricorrenze di # con {0}, mettendo però {0} alla prima ricorrenza, {1} alla seconda ricorrenza, etc ottenendo perciò

    xxxx{0}xxxxxxxx{1}xxxxxxxx{2}xxxxxxxxxx


    mi servirebbe almeno un suggerimento su come iniziare, per esempio dalla espressioni regolari

    ciao
    Pietro

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    ciao Pietro,

    una cosa del genere ?
    codice:
    Dim index As Integer = 0
            Dim c As Integer = 0
            While True
                index = s.IndexOf("#", index)
                If index < 0 Then
                    Exit While
                End If
                s = s.Remove(index, 1)
                s = s.Insert(index, "{" & System.Math.Max(System.Threading.Interlocked.Increment(c), c - 1) & "}")
            End While
    l'ho scritto al volo i c# e l'ho tradotto con il traduttore, magari se vuoi usare uno stringuilder e incrementare diversamete c...

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da U235
    ciao Pietro,

    una cosa del genere ?
    codice:
    Dim index As Integer = 0
            Dim c As Integer = 0
            While True
                index = s.IndexOf("#", index)
                If index < 0 Then
                    Exit While
                End If
                s = s.Remove(index, 1)
                s = s.Insert(index, "{" & System.Math.Max(System.Threading.Interlocked.Increment(c), c - 1) & "}")
            End While
    l'ho scritto al volo i c# e l'ho tradotto con il traduttore, magari se vuoi usare uno stringuilder e incrementare diversamete c...
    purtroppo non posso scrivere nel titolo [vb.net-c#-framework 2.0] così da dare a chi risponde la possibilità di usare il suo linguaggio preferito e lasciare a chi pone la domanda l'onere di una eventuale traduzione...

    Ti ringrazio adesso provo Ciao
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    se non disturbo e se non hai già cancellato o non sei già andato al mare puoi passarmi il codice originale in c#?

    Pietro

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    codice:
    string s = "xxxx#xxxxxxxx#xxxxxxxx#xxxxxxxxxx";
    int index = 0;
                int c = 0;
                while (true)
                {                
                    index = s.IndexOf("#", index);
                    if (index < 0) break;
                    s = s.Remove(index, 1);
                    s = s.Insert(index,"{"+ c++ +"}");
                }
    EDIT :

    codice:
                string s = "xxxx#xxxxxxxx#xxxxxxxx#xxxxxxxxxx";
                int index = 0;
                int c = 0;
                while (true)
                {                
                    index = s.IndexOf("#", index);
                    if (index < 0) break;
                    StringBuilder sb = new StringBuilder("{");
                    sb.Append(c++);
                    sb.Append("}");
                    s = s.Remove(index, 1);
                    s = s.Insert(index,sb.ToString());
                }
    che dici è meglio?

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    non molto bello quel "{"+ c++ +"}", se passa alka mi cazzia giustamente!

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da U235
    non molto bello quel "{"+ c++ +"}", se passa alka mi cazzia giustamente!
    mi dispiace contraddirti
    primo: lasciamo alka al mare o in montagna
    secondo: l'originale c# è molto più chiaro della traduzione robotica in basic

    Pietro

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    hai ragione
    dicevo per lo stringBuilder

    codice:
    string s = "xxxx#xxxxxxxx#xxxxxxxx#xxxxxxxxxx";
                int index = 0;
                int c = -1;
                StringBuilder sb = new StringBuilder("{0}");
                while (true)
                {                
                    index = s.IndexOf("#", index);
                    if (index < 0) break;
                    sb.Replace(c++.ToString(), c.ToString());
                    s = s.Remove(index, 1);
                    s = s.Insert(index,sb.ToString());
                }
    così? secondo te è meglio?

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    debbo ancora fare esperimenti ma è già molto avere avuto una risposta in questa calda giornata di agosto.

    In pratica ho dei files di template xml formattati ad uso della funzione sprintf di php.

    Dato che uso vb.net o c# e dato che abbiamo la funzione String.format, volevo convertire tutti i segnaposto php %s in {n} in modo da sostituire la sprintf php con la nostra String.Format

    ciao
    Pietro

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.