2012-01-13 21 views
43

Ho lavorato nel messaggio SOAP per ottenere LoginToken da Webservice e archiviare LoginToken in String e utilizzato System.out.println(LoginToken); per la stampa. Questo stampa [wdsd34svdf], ma voglio solo wdsd34svdf quindi, come rimuovere la parentesi quadra. per favore qualcuno mi aiutiCome rimuovere il primo e l'ultimo carattere di una stringa?

Grazie

Esempio:

String LoginToken=getName().toString(); 
System.out.println("LoginToken" + LoginToken); 

uscita: [wdsd34svdf] voglio wdsd34svdf

+5

Questa domanda mostra assolutamente alcun sforzo di ricerca –

+2

E 'vero, ma ora c'è un altro risposta copia-incolla per programmatori pigri che chiedono a google cose del genere :) – tom

risposta

110

E 'facile, È necessario trovare l'indice di [an d] quindi sottostringa. (Qui [è sempre all'inizio e] è alla fine),

String loginToken="[wdsd34svdf]"; 
System.out.println(loginToken.substring(1, loginToken.length()-1)); 
+0

grazie mille –

+0

Mi piace che inizi la frase con: "È facile" ... :) Immagino che sia tutto facile quando lo sai .. mi ha aiutato comunque –

+6

Questo dovrebbe essere loginToken.length() - 2 per rimuovere la staffa terminale. – mga911

11

È sempre possibile utilizzare substring:

String loginToken = getName().toString(); 
loginToken = loginToken.substring(1, loginToken.length() - 1); 
3

ho avuto uno scenario simile, e ho pensato che qualcosa di simile

str.replaceAll("\[|\]", ""); 

sembrava più pulito. Ovviamente, se il tuo token potrebbe contenere parentesi, non funzionerebbe.

+1

si noti che solo replaceAll() e replaceFirst() supportano la regex, quindi qui str.replaceAll ("\\\ [| \\\]", ""); funzionerà – rekinyz

+0

@ user1146450 ovviamente, scusa! – V9801

+1

L'espressione corretta è qualcosa come str = str.replaceAll ("\\ [| \\]", ""); vedere la mancanza \\ nella tua espressione – Raj

7

Un'altra soluzione per questo problema è utilizzare il metodo commons-lang (dalla versione 2.0) StringUtils.substringBetween(String str, String open, String close). Il vantaggio principale è che è un'operazione di sicurezza nulla.

StringUtils.substringBetween("[wdsd34svdf]", "[", "]"); // returns wdsd34svdf

+2

Questo funzionerà per quello specifico scenario, ma restituirà "wdsd" se "[wdsd] 34svdf]" è stato passato come primo parametro. – izilotti

10

Questo è soluzione generica:

str.replaceAll("^.|.$", "") 
0

In questo modo è possibile rimuovere 1 leader "[" e 1 finale "]" carattere. Se la stringa capita di non iniziare con "[" o terminare con "]" non rimuoverà nulla:

str.replaceAll("^\\[|\\]$", "") 
+0

Lo hai provato? Potrei sbagliarmi, ma sembra "inizio della stringa, quindi o [o] quindi fine della stringa". Non abbiamo bisogno di parentesi qui? – YakovL

+1

Sì, funziona perfettamente bene: \t @Test \t pubblico testReplace void() { \t \t String str = "[wdsd34svdf]"; \t \t str = str.replaceAll ("^ \\ [| \\] $", ""); \t \t assertTrue (str.equals ("wdsd34svdf")); \t} –

Problemi correlati