2012-01-13 18 views
43

He trabajado en el mensaje SOAP para obtener LoginToken del servicio web y almaceno el LoginToken en String y he usado System.out.println(LoginToken); para imprimir. Esto imprime [wdsd34svdf], pero solo quiero wdsd34svdf, cómo eliminar el corchete. por favor, alguien me ayude¿Cómo eliminar el primer y el último carácter de una cadena?

Gracias

Ejemplo:

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

de salida: [wdsd34svdf] Quiero wdsd34svdf

+5

Esta pregunta muestra absolutamente ningún esfuerzo de investigación –

+2

Eso es correcto, pero ahora hay una mayor copiar y pegar respuesta para los programadores perezosos que preguntan a Google por cosas como esa :) – tom

Respuesta

110

Es fácil, Usted necesita para encontrar el índice de [un d] luego subcadena. (Aquí [es siempre al principio y] es al final),

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

muchas gracias –

+0

Me gusta que comiences la frase con: "Es fácil" ... :) Creo que todo es fácil cuando lo sabes ... aunque me ayudó –

+6

Esto debe ser loginToken.length() - 2 para eliminar el corchete final. – mga911

11

Puede utilizar siempre substring:

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

que tenían un escenario similar, y pensé que algo así

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

parecía más limpio. Por supuesto, si tu token puede tener corchetes, eso no funcionaría.

+1

tenga en cuenta que solo replaceAll() y replaceFirst() son compatibles con la expresión regular, por lo que aquí str.replaceAll ("\\\ [| \\\]", ""); funcionará – rekinyz

+0

@ user1146450 por supuesto, lo siento! – V9801

+1

La expresión correcta es algo así como str = str.replaceAll ("\\ [| \\]", ""); vea la \\ faltante en su expresión – Raj

7

Otra solución para este problema es el uso del método commons-lang (desde la versión 2.0) StringUtils.substringBetween(String str, String open, String close). La principal ventaja es que es una operación segura nula.

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

+2

Esto funcionará para ese escenario específico, pero devolvería "wdsd" si se pasó "[wdsd] 34svdf]" como el primer parámetro. – izilotti

10

Ésta es una solución genérica:

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

De esta manera se puede quitar 1 líder "[" y arrastre 1 "]" carácter. Si la cadena suceda a no empezar con "[" o terminar con "]" no va a eliminar cualquier cosa:

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

¿Has probado eso? Puedo estar equivocado, pero parece que "comienza la cuerda, luego [o] luego el final de la cuerda". ¿No necesitamos corchetes aquí? – YakovL

+1

Sí, funciona perfectamente bien: \t @test \t public void testReplace() { \t \t cadena str = "[wdsd34svdf]"; \t \t str = str.replaceAll ("^ \\ [| \\] $", ""); \t \t assertTrue (str.equals ("wdsd34svdf")); \t} –

Cuestiones relacionadas