2011-11-30 14 views
8

Ho un piccolo problema con l'operazione meno in Java. Quando l'utente preme il tasto 'backspace', voglio che il carattere digitato dall'utente venga rimosso dalla parola che esiste. es parola = mionome e dopo un backspace parola = mynamOperazione meno stringa sulla stringa

Questo è un pò di quello che ho:

String sentence = ""; 
char c = evt.getKeyChar(); 
if(c == '\b') { 
    sentence = sentence - c; 
} else { 
    sentence = sentence + c; 
} 

L'operazione aggiunga opere. Quindi, se aggiungo una lettera, si aggiunge alla parola esistente. Tuttavia, il segno meno non funziona. Mi sto perdendo qualcosa qui? O farlo completamente sbagliato?

risposta

8

Lo stai facendo completamente sbagliato. È necessario substring da 0 alla lunghezza della stringa, meno uno. Quindi:

sentence = sentence.substring(0, sentence.length() - 1); 
+0

impressionante che ha senso. Ho provato a usare il '-' perché il + stava funzionando. Non sono riuscito a trovare alcun riferimento sul web (probabilmente c'è qualcosa là fuori, solo che non ho visto) – user1005253

0

Per comodità, Java supporta la concatenazione di stringhe con il segno "+". Questo è l'unico operatore binario con un tipo di classe come operando. Vedere String concatenation operator nella specifica della lingua Java.

Java non supporta un overload dell'operatore '-' tra una stringa e un carattere.

Invece, è possibile rimuovere un carattere da una stringa aggiungendo le sottostringhe prima e dopo.

0
sentance = sentance.substring(0, sentance.length() - 1); 

Non esiste un operatore corrispondente a + che consente di eliminare un carattere da una stringa.

0

Si dovrebbe indagare la classe StringBuilder, ad esempio:

StringBuilder sentence = new StringBuilder(); 

allora si può fare qualcosa di simile:

sentence.append(a); 

per un nuovo personaggio o

sentence.deleteCharAt(sentence.length() - 1); 

Poi quando effettivamente vuoi usare la stringa, usa:

String s = sentence.toString(); 
Problemi correlati