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

    [ASP] Espressione Regolare

    Ho sempre capito ben poco delle RegEx e le ho sempre usate in JS.
    Ora mi serve per ASP e non so da che parte prenderla.


    Il mio problema:
    Mi arrivano dei testi mal digitati, con virgole e punti senza spazi a seguire ecc.
    Sulla gran parte aggiusto con un semplice replace ma devo distinguere i numeri.
    Spesso capita 12,34 oppure 32.12 .. c'è del casotto.
    Voglio tutti i numeri con il punto.
    Credo che l'espressione di ricerca sia [0-9],[0-9]

    Qui la mia conoscenza di RegEx si ferma.

    Come è composta una stringa per mettere i punti al posto delle virgole solo ai numeri?
    E come usarle in replace()

    Ho cercato un po' in giro ma trovo solo delle funzioni che non fanno capire il concetto.


    Grazie

  2. #2

  3. #3
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    266
    Ciao dai un occhiata qui https://www.mikesdotnetting.com/arti...s-and-vbscript
    Per il tuo problema devi usare questa regexp \d{0,},\d{0,} prende tutti i numeri con una virgola
    Da un grande potere derivano grandi responsabilità

  4. #4
    Ok, ma come sostituisco la virgola con un punto senza danneggiare i numeri?
    E' questo che non capisco.

  5. #5
    tanto per capire, tu hai una stringa complessa di questo tipo: "SoloWiFi ha speso 37,42 euro in negozio" e tu vorresti trasformarla in "SoloWiFi ha speso 37.42 euro in negozio" ?

    Oppure ha SOLO il numero?

  6. #6
    Ho la stringa complessa. Il tuo esempio va bene

  7. #7
    Dopo aver fatto qualche test sono allo stesso punto di prima.

    Partendo da questo esempio: Testo="ImportoA 12,34 ImportoB 56,78"
    con RegExpr e Pattern come suggerito o come ho scritto io
    in metodo RegExp.Replace(Testo,".") torna sempre questa stringa:
    ImportoA 1.4 ImportoB 5.8

    come vedete mi si mangia tutta la corrispondenza del Pattern sostituendola con il punto.

    A questo punto potrei usare il metodo Execute ed andare a raccattare tutte le corrispondenze per poi manipolarle tramite la classica funzione replace() allungandomi i processi

    Come fare per trovare le giuste occorrenze e sostituire solo quello che dico io nelle occorrenze trovate?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,162
    Ti servono i capturing groups:

    codice:
    Testo="ImportoA 12,34 ImportoB 56,78"
    Pattern = "(\d),(\d)"
    RegExp.Replace(Testo, Pattern, "$1.$2")

    Non conosco ASP, quindi adatta un attimo la sintassi.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ti servono i capturing groups:

    codice:
    Testo="ImportoA 12,34 ImportoB 56,78"
    Pattern = "(\d),(\d)"
    RegExp.Replace(Testo, Pattern, "$1.$2")

    Non conosco ASP, quindi adatta un attimo la sintassi.
    Perfetto, ora funziona!
    Grazie


    La sintassi corretta è la seguente:
    codice:
            Testo="ImportoA 12,34 ImportoB 56,78"
    
    	Set RegEx = New RegExp
    	With RegEx
    	  .Pattern = "(\d),(\d)"
    	  .Global = true
    	  .IgnoreCase = true
    	End With
    
    
    	NuovoTesto=RegEx.Replace(Testo, "$1.$2")
    
    
    	response.write NuovoTesto

  10. #10
    Un'ultima cosa:
    Per la virgola a punto è OK

    Ho provato a fare l'inverso, ovvero da punto a virgola ma il Pattern "(\d).(\d)" non funziona e crea gran casino. Il punto è un carattere spaciale.
    Come posso fare per usare il punto sul Pattern?

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 © 2020 vBulletin Solutions, Inc. All rights reserved.