Newsgroup: it.comp.lang.javascript
Titolo: Controllare se 2 stringhe sono uguali :-??

Ciao,
primi esperimenti in javascript...
sapete suggerirmi come controllare se due stringhe sono uguali ?
Vorrei una funzione che funzioni con javascript 1.1 o al limite anche 1.2
...
Ho provato con
string1 == string2
ma me le rileva sempre diverse...
search(string1,string2)
ma le vede sempre uguali...
help!
Fabi

 ma me le rileva sempre diverse...
Forse perché sono effettivamente diverse. Per controllare se due stringhe
sono uguali, si fa proprio cosě.
Prova cosě:
    s1 = "Due stringhe uguali";
    s2 = "Due stringhe uguali";
    alert(s1 == s2);
dovrebbe darti true.
Maurizio.

sicuramente e' una cosa stupidissima pero' non riesco a capirla :-(
Di seguito la semplicissima funzione che sto provando e che ha 2 problemi:
1) non funziona proprio perche' si "pianta" all'istruzione fra gli
asterischi
    il motivo mi e' sconosciuto
2) mi dice che le sue stringhe sono sempre diverse (!) quando anche provando
a stamparle con un alert
    vedo che sono uguali... se prima del confronto pero' assegno manualmente
i valori alle variabili il
    controllo riesce, non capisco perche' cosi non riesca...
Help!
function checkString(box1, box2, box3, box4) //funzione di controllo input
richiamata da form onSubmit
{
 var stringa1 = new String(box1);
 var stringa2 = new String(box2);
 var stringa3 = new String(box3);
 var stringa4 = new String(box4);
 var pwd = /^[a-zA-Z0-9]{5,}$/;
 var email =
/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/;
 var iva = /^[0-9]{11,14}$/;
 if (email.exec(stringa1) == null) {  // controllo validità indirizzo e-mail
  alert("Inserire un indirizzo e-mail valido!\n");
  document.form1.email.focus();
  return false;
 } else {
  if (pwd.exec(stringa2) == null) {  // controllo validità password
   alert("Inserire una password nel formato specificato:\n\n lettere o
numeri, no spazi, 5 caratteri minimo.");
   document.form1.pwd.focus();
   return false;
  } else {
   if (stringa3 == null || stringa3 == "") { //verifico che la seconda pwd
non sia vuota
    alert("Compilare la password di conferma!\n");
    document.form1.convalida.focus();
    return false;
   } else {
    if (stringa2==stringa3) {  //verifico se le due password sono uguali
//***********************************************************************
// se tolgo questo pezzo funziona tutto, "con",  la funzione viene
semplicemente ignorata :-???
     if (iva.exec(stringa4) == null) {  //controllo se la partita IVA e'
valida
      alert("La partita IVA e' stata inserta in un formato non valido.\n");
      document.form1.iva.focus();
      return false;
     } else {
      return = true;
     }
//***********************************************************************
    } else {
     alert("Le due password digitate non corrispondono.\n");
     document.form1.pwd.focus();
     return false;
    }
   }
  }
 }
}

 anche provando a stamparle con un alert
Prova a stampare le due stringhe carattere per carattere oltre che la loro
lunghezza. Meglio ancora se fai stampare i codici ASCII dei caratteri.
Maurizio.

 lunghezza. Meglio ancora se fai stampare i codici ASCII dei caratteri.
ho provato in mille modi, per quello che ne capisco io le vedo sempre uguali
:-???
Grazie
Fabi

Ho trovato uno dei 2 errori:
avevo messo come istruzione finale della serie di IF
return = true
c'era un = di troppo !!
Invece rimane ancora il mistero su perche' non faccia correttamente il
confronto di stringhe :-((
Fabi

  var stringa4 = new String(box4);
Togli new String e dovrebbe funzionare,
box1/2/3/4 "sono" stringhe.
--
Ciao
  [web]   
www.gfcarlotti.it
   [mail]   
fra...@gfcarlotti.it
    [pgp]  
www.gfcarlotti.it/pgp/franco.asc

 confronto di stringhe :-((
Perche' non stai confrontando se due stringhe sono uguali, ma stai
confrontando se si tratta dello stesso oggetto (la classe e' irrilevante nel
confronto, sempre di oggetto si tratta).
var s1=new String("a"),
	s2=new String("a"),
	s3="a",
	s4="a",
	s5=s1;
alert(s1==s2) // FALSE - s1 non e' uguale all'oggetto s2.
alert(s1.value==s2.value) // TRUE - il valore di s1 e' uguale al valore di
s2
alert(s1==s3) // TRUE - Non e' un confronto tra oggetti, e quindi viene
preso il valore di s1
alert(s3==s4) // TRUE - Confronti due valori stringa, non due oggetti
stringa
alert(s1==s5) // TRUE - Puntano allo stesso oggetto
--------------------------------
Inviato via 
http://usenet.libero.it

 box1/2/3/4 "sono" stringhe.
Grazie!!! :-)
cosi' va !
Fabi

 confronto, sempre di oggetto si tratta).
Thanks...
in realta...quello che so e ho abbozzato e' il frutto di una prima lettura
di Javascript Tutto&oltre fatta in un paio di giorni...come dire sono ancora
molto ignorante ;).... spero di migliorare anche se l'argomento, per le mie
conoscenza, risulta assai complesso..
Grazie ancora
Fabi

 Grazie ancora
Di nulla. Nel tuo caso cmq (ho dato una veloce scorsa allo script solo
adesso) mi pare di capire che le variabili "box" che passi alla funzione,
sono in realta' campi di una form. In questo caso, potresti passare
direttamente il valore stringa contenuto in essi, oppure, assegnare a
"stringa" i valori stringa. Es.
function xx(box1,box2,box3){
    var stringa1=box1.value,
        stringa2=box2.value,
        stringa3=box3.value;
 
    ...


Grazie moltissimo !
Penso che mi leggero' la guida netscape che mi hai suggerito... anche per
prendere un po' piu' di confidenza come la programmazione ad oggetti che per
me e' cosa nuova...