Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di jubin
    Registrato dal
    Jan 2002
    Messaggi
    234

    Estrapolazione numeri, anke frazionari, da stringa

    Salve...
    oggi e' giornata di domande
    ora cosa mi servira' mai? nulla di particolarmente complesso probabilmente: estrarre da una particolare stringa dei numeri. Tale stringa contiene lettere e numeri... a me servirebbero solo i numeri. Ovviamente andrebbero in un'array... poi mi diletterei in un'eventuale moltiplicazione/divisione dei dati estrapolati...
    ah, puo' capitare che i numeri oltre che interi siano frazionari nel formato "3/4" ad esempio... beh dovrei riuscire ad estrapolare anke questi, ad esempio "3/4" come "3/4" appunto e non come "3" e "4"... se poi qualcuno di voi avesse tra le mani un modo decente per rendere le frazioni in modo elegante, cioe' nn ritrovarmi, nel moltiplicare 3/4 * 2 ad avere un triste 6/4 ma magari un bel 3/2 e via dicendo...

    grazie a chiunque avra' voglia di rispondere anke ad uno solo dei miei quesiti, scusate l'eventuale banalita' ma quando certi argomenti non vengono toccati anke in 2 o 3 anni di programmazione amatoriale e non di piu' e piu' siti... beh, difficilmente se ne riesce a trovare una risposta ad intuito

    grazie ancora'
    Jubin

  2. #2

    risposta

    codice a livello intuitivo:
    fai 2 variabili: 1 è la tua con la stringa, 1 altra è vuota ed è quella dove ci metti solo i numeri.
    ciclo for da x=0 fino a x=numero caratteri
    prendi la lettera che si trova nella pos x.
    se è lettera nn fa niente, se è numero la concatena alla variabile ch conterrà i numeri.
    x vedere se è numero basta che controlli se il suo codice ascii (funzione asc) è compreso tra... nn me lo ricordo cercati 1 tabella ascii.

    bye

  3. #3
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    $stringa="ciao54come33 lalala 45";
    $stringa=explode("#",preg_replace("/[a-zA-Z]+/","#",$stringa));
    array_shift($stringa);
    print_r($stringa); //Array ( [0] => 54 [1] => 33 [2] => 45 )
    think simple think ringo

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    //--------------------------------------------
    function semplifica($frazione){
    	$temp=explode("/",$frazione);
    	if ($temp[0] % $temp[1] != 0){
    		$a=$temp[0];
    		$b=$temp[1];
    		while ($a <> $b){
    			if ($a > $b)
    				$a=$a-$b;
    			else
    				$b=$b-$a;
    		}
    		return $temp[0]/$a."/".$temp[1]/$a;
    	} else
    		return $temp[0]/$temp[1];
    }
    //--------------------------------------------
    echo semplifica("555/27");
    think simple think ringo

  5. #5
    Utente di HTML.it L'avatar di jubin
    Registrato dal
    Jan 2002
    Messaggi
    234
    Originariamente inviato da marketto
    codice:
    $stringa="ciao54come33 lalala 45";
    $stringa=explode("#",preg_replace("/[a-zA-Z]+/","#",$stringa));
    array_shift($stringa);
    print_r($stringa); //Array ( [0] => 54 [1] => 33 [2] => 45 )
    ehm...
    si' funziona ma avrai alcuni problemi: ad es se ci metti dentro una parentesi o dei due punti o un apice me lo legge cm numero... e poi se il numero e' il primo carattere della variabile nn ne tiene conto...
    per il secondo problema basterebbe metterci davanti un qualsiasi carattere, ma fa un po' skifo come risoluzione...
    avresti la soluzione anke a questo??

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    $stringa="1 2 344 { 434 }#4343adaas";
    $stringa=explode("#",preg_replace("/[^0-9]+/","#",$stringa));
    sort($stringa);
    array_shift($stringa);
    print_r($stringa); //Array ( [0] => 1 [1] => 2 [2] => 344 [3] => 434 [4] => 4343 )
    sicuramente esiste una soluzione migliore, cmq al momento puoi fare così
    think simple think ringo

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.