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

    .toLowerString e .toUpperString!

    Ciao Ragazzi. Ho un problemino con .toLowerString e .toUpperString.

    Nell'esercizio devo prendere una stringa da un form/input e devo invertire i caratteri da maiuscolo a minuscolo, e viceversa.
    Il problema è che l'assegnazione nella variabile del carattere convertito non funziona!

    Questo è il codice:



    codice:
    <html>
        <head>
    	<script language="javascript">
    	    
    	    function invertCase(text1) {
    		
    		var testo = document.form1.text1.value;
    				
    		
    		
    		for (i=0; i<testo.length; i++) {
    		    if (testo[i] == testo[i].toLowerCase()) {
    			alert("Inverto " + testo[i] + " in " + testo[i].toUpperCase());
    			testo[i] = testo[i].toUpperCase(); //questo non funziona!
    
    		    }
    		    else if (testo[i] == testo[i].toUpperCase()) {
    			alert("Inverto " + testo[i] + " in " + testo[i].toLowerCase());
    			testo[i] = testo[i].toLowerCase(); //e manco questo!
    		}   
    		    
    		    
    	    }
    		alert("Testo invertito: " + testo + " " +testo.length);
    	    }
    	</script>
    	<title></title>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        </head>
        <body>
    	
    	
    	<form name="form1">
    	    <input type="button" value="Inverti!" onClick="invertCase(text1)">
    	  
    	    <input type="text" name="text1" size="32"/>
    	</form>
    	
    	<div>Sciao</div>
        </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Supposto che gli alert funzionano dando l'output corretto, ti manca solo la parte più importante e cioè quella in cui setti il value del campo di testo

    alert("Testo invertito: " + testo + " " +testo.length);
    document.form1.text1.value = testo ;

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    sinceramente non ho mai provato una cosa del genere, cioè utilizzare una stringa come array(almeno non in js).... ma temo che il problema stia proprio li. Quando vai a valorizzare l'array non stai modificando la stringa di testo, ed è per questo che il risultato che ottieni non è corretto. Cioè riesci accedere in lettura ma non in scrittura. E' l'unica spiegazione plausibile che mi viene in mente.

    Quindi la soluzione piu semplice dovrebbe essere quella di utilizzare un stringa di appoggio e concatenare i vari cartteri

    codice:
    function invertCase(text1) {
    		var testo = document.form1.text1.value;
    
                    testoInvertito = "";
    		for (i=0; i<testo.length; i++) {
    		    if (testo[i] == testo[i].toLowerCase()) {
    			alert("Inverto " + testo[i] + " in " + testo[i].toUpperCase());
    			testoInvertito += testo[i].toUpperCase(); //questo non funziona!
    
    		    }
    		    else if (testo[i] == testo[i].toUpperCase()) {
    			alert("Inverto " + testo[i] + " in " + testo[i].toLowerCase());
    			testoInvertito += testo[i].toLowerCase(); //e manco questo!
    		}    
    	    }
    		alert("Testo invertito: " + testoInvertito + " " +testo.length);
    	    }
    Probabilmente ancora meglio sarebbe utilizzare il metodo charAt dell'oggetto stringa invece di utilizzare una stringa come fosse un array. oppure utilizzare il metodo slice("") per convertire la stringa in un array.

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    scusa, nn fai prima così?

    codice:
    testoInvertito = testo.replace(/[a-z]/g, function (sMinusc) { return sMinusc.toUpperCase(); })
    .replace(/[A-Z]/g, function (sMaiusc) { return sMaiusc.toLowerCase(); });

  5. #5
    Usare gli array come stringhe purtroppo non è previsto dallo standard, credo che funzioni solo con Firefox. Puoi usare testo.charAt(i).

    Ma i caratteri maiuscoli cominciano dal 65, i minuscoli dal 97. Perciò è molto più efficiente una cosa del genere:

    var c = testo.charCodeAt(i);
    c += (c < 97) ? 32 : -32;

    (è solo un esempio per farti capire il concetto, pensa tu ad applicarlo al tuo codice...)

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.