Newsgroup: it.comp.java
Titolo: Aiuto Stringa!!

Salve a tutti,
Esiste una funzione che mi sostituisce in una stringa i caratteri tipo \n \"
\' (quelli speciali) praticamente se ho una variabile Stringa contenente il
testo plu"t'o\abc vorrei convertirla nella seguente stringa plu\"t\'o\abc .
Ciao e grazie

 stringa plu\"t\'o\abc .
Non ho capito benissimo il problema, ma che io sappia non esiste una
funzione del genere.
Ma non dovrebbe nemmeno essere cosě difficile fare un piccolo metodo che
ti faccia quello che vuoi... se spieghi meglio (cosě da capire se ho
capito :P) posso aiutarti a fare il metodo.
Ciao :)
-- 
Alice 'Cricetina' Nicoletti
FIAG Free It-Alt Group member * 
http://www.fiag.it
X-Privat free newsserver  * * * 
http://www.x-privat.org
Powered by Debian GNU/Linux SID news:it-alt.comp.os.linux.debian

 ti faccia quello che vuoi... se spieghi meglio (così da capire se ho


 Ciao e grazie
puoi creare un metodo come questo:
private String escapeSql(String controllami){
  String
caratteriValidi="1234567890qwertyuiopèéasdfghjklòçàùzxcvbnmQWERTYUIOPLKJHGFD
SAZXCVBNM" //caratteri che non danno errori
  String risultato="";
  for (int i=0; i<controllami.length(); i++){  //controllo carattere per
carattere la Stringa controllami
    if (caratteriValidi.indexOf(controllami.substring(i, i+1))==-1)
risultato+="\\";  //se il carattere che sto controllando non è presenti in
caratteriValidi aggiunge "\"
    risultato+=controllami.substring(i, i+1); //aggiunge il carattere
controllato
  }
  return risultato;
}
e invece di scrivere:
String cond=tx.getText():
devi usare:
String cond=escapeSql(tx.getText());
-- 
Dimux
http://www.128byte.com
Scopri gli errori e i segreti dei tuoi film, album e programmi
preferiti!

 supponi ce nel tx c'è abc"def\ l'sql va in errore.
Ho capito...
e allora prova a costruire un metodo che presa in pasto una stringa, se
trova i caratteri speciali di cui parlavi prima, gli aggiunge il "\".
Ci sono vari modi per farlo, il primo (stupido) che mi viene in mente è
questo:
crea uno StringBuffer di dimensione pari al doppo della tua stringa; con
un ciclo for ti scorri tutta la stringa, e tramite il metodo charAt
delle stringhe controlli ogni singolo carattere; se non si tratta di un
carattere speciale lo appendi allo StringBuffer così com'è, altrimenti
appendi allo StringBuffer prima il "\" e poi il carattere speciale.
Alla fine avrai uno StringBuffer contenente la tua stringa,
riconvertilo in formato stringa e lo fai restituire (ci sarà un metodo
della classe StringBuffer che lo permetterà). Ovviamente per i dettagli
implementativi consulta la documentazione in particolare i metodi delle
classi String e StringBuffer.
Fammi sapere come va... 
Ciao!


 puoi creare un metodo come questo:
Ecco... hai concretizzato su per giů il mio pensiero :)


 supponi ce nel tx c'è abc"def\ l'sql va in errore.
secondo me il modo migliore è usare sempre i PreparedStatement:
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html
comunque, c'è pure questa «inguardabile» possibilità:
sql.replaceAll("([\\\\'\"\\{\\}])","\\\\$1");
-- 
Njc

 supponi ce nel tx c'è abc"def\ l'sql va in errore.
secondo me il modo migliore è usare sempre i PreparedStatement:
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html
comunque, c'è pure questa «inguardabile» possibilità:
cond.replaceAll("([\\\\'\"\\{\\}])","\\\\$1");
-- 
Njc

 }
Aggiungerei solo alcune ottimizzazioni fra qui, quella più importante, 
quella di utilizzare la classe StringBuffer invece di concatenare le 
stringhe ad ogni iterazione.
La pesantezza di concatenare due stringhe (che comporta creare una nuova 
stringa e copiarci le due originali) è fin troppo spesso sottovalutata.
--------------------------------------------------------------------------
private static String escapeSql(String controllami){
     String caratteriValidi= 
"1234567890qwertyuiopèéasdfghjklòçàùzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM";
     StringBuffer risultato = new StringBuffer(controllami.lenght()*2);
     for (int i=0; i<controllami.length(); i++){
       //controllo carattere per carattere la Stringa controllami
       char ch = controllami.charAt(i);
       if (caratteriValidi.indexOf(ch)==-1) {
         //se il carattere che sto controllando non è presenti in 
caratteriValidi aggiunge '\'
         risultato.append('\\');
       }
       risultato.append(ch); //aggiunge il carattere controllato
     }
     return risultato.toString();
   }
--------------------------------------------------------------------------
Una cosa su cui si può fare una scelta è la dimensione iniziale del 
buffer del risultato. La dimensione che ho impostato è quella da la 
sicurezza di non dover mai ridimensionare il buffer, anche nel caso in 
cui tutti i caratteri siano "speciali". Probabilmente è un pò eccessiva 
come premura.
Andrea Polci