Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Java] Inserire separatore in una stringa dop lultimo carattere numerico

    Ciao a tutti, avendo una stringa del tipo:

    String miaStringa="balconi:4,5x3,5+6x2,4cucina 4,5x4,8ingresso 1,5x6"

    avrei la necessità di inserire un separatore fra l'ultimo carattere numerico ed il carattere alfabetico successivo...per poi passare al metodo split() per ottenere l'array...


    ho provato ini questo modo ma non mi da' il risultato desiderato:

    codice:
    String result = miaStringa.replaceAll("(?<=\\p{L})(?=\\p{N})", "|");
    Avete qualche soluzione?

    Grazie!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,131
    Il problema più grande è che la stringa non ha un pattern regolare:

    1) la prima informazione (balconi) è separata dai suoi valori tramite il carattere "due-punti", mentre lo stesso pattern non si vede nel resto delle informazioni (cucina e ingresso non sono separati dai rispettivi valori tramite i due punti).

    2) Il carattere "x" che tu interpreti come "simbolo di moltiplicazione" e il simbolo "+" sono essi stessi caratteri alfabetici (quindi di per sé è un separatore tra parte alfabetica e parte numerica).

    Se il tuo obiettivo è semplicemente separare i valori numerici dal resto (e non te ne frega molto del resto), allora puoi procedere in questo modo:

    codice:
    String miaStringa = "balconi:4,5x3,5+6x2,4cucina 4,5x4,8ingresso 1,5x6";
    Pattern p = Pattern.compile("(\\d+,{0,1}\\d*)");
    Matcher m = p.matcher( miaStringa );
    String stringaSeparata = m.replaceAll("|$1|");
    System.out.println( stringaSeparata );

    Ovviamente, la "x" (che viene usata come simbolo di moltiplicazione) e il "+" verranno separati dai numeri. Il precedente snippet di codice produce questo risultato:

    codice:
    balconi:|4,5|x|3,5|+|6|x|2,4|cucina |4,5|x|4,8|ingresso |1,5|x|6|

    Ciao.
    Ultima modifica di LeleFT; 30-12-2019 a 11:32
    "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

  3. #3
    Grazie del tuo supporto Lele, in realta' come risultato vorrei avere il separatore tra l'ultimo numero e la la prima lettera successiva...una cosa del genere insomma:

    codice:
    String miaStringa="balconi:4,5x3,5+6x2,4|cucina 4,5x4,8ingresso 1,5x6|bagno...."
    Grazie ancora!

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.