Java String trim no tiene efecto

Java String trim no elimina un carácter de espacio en blanco para mí.

String rank = (some method);
System.out.println("(" + rank + ")");

La salida es (1 ). Observe el espacio a la derecha del 1.

Tengo que eliminar el espacio final de la cadena. rank pero tampoco rank.trim() ni rank.replace(" ","") lo quita.

La cuerda rank simplemente sigue siendo el mismo de cualquier manera.

Editar: Código completo::

Document doc = Jsoup.connect("http://www.4icu.org/ca/").timeout(1000000).get();
Element table = doc.select("table").get(7);
Elements rows = table.select("tr");
for (Element row: rows) {
  String rank = row.select("span").first().text().trim();
  System.out.println("("+rank+")");
}

¿Por qué no puedo eliminar ese espacio?

preguntado el 28 de julio de 12 a las 12:07

¿Utiliza rank = rank.trim(); o solo rank.trim();? El segundo no funcionará. -

proporcione el código trim () que ha utilizado .. -

@TerryLi Tal vez deberías darnos una idea de qué (some method) lo hace. -

@Baz (some method) solo intenta extraer la clasificación de cada universidad de este sitio:4icu.org/ca -

Muestre un programa corto pero completo que demuestre el problema. No ha proporcionado suficiente información en este momento. -

7 Respuestas

El código fuente de ese sitio web muestra el carácter html especial  . Intente buscar o reemplazar lo siguiente en su Java String: \u00A0.

Ese es un espacio irrompible. Ver: Tengo una cadena con "\u00a0", y necesito reemplazarla con "" str_replace falla

rank = rank.replaceAll("\u00A0", "");

Deberia trabajar. Tal vez agregue un doble \\ en vez de \.

contestado el 23 de mayo de 17 a las 12:05

@TerryLi Vea, si proporciona suficiente información, podemos ayudarlo. Me alegro de haber podido ayudar :) - base

Vale la pena señalar esta respuesta: stackoverflow.com/questions/1437933/… - cuaternio

Debe asignar el resultado de recorte de nuevo a la String variable. De lo contrario, no funcionará, porque las cadenas en Java son inmutable.

String orig = "    quick brown fox    ";
String trimmed = original.trim();

Respondido 28 Jul 12, 12:07

El carácter es un espacio que no se rompe y, por lo tanto, no es eliminado por el trim() método. Itere a través de los caracteres e imprima el valor int de cada uno, para saber qué carácter debe reemplazar por una cadena vacía para obtener lo que desea.

Respondido 28 Jul 12, 13:07

¿Estás asignando la cadena?

String rank = " blabla "; 
rank = rank.trim();

No olvide la segunda asignación, o su cadena recortada no irá a ninguna parte.

También puede buscar este tipo de cosas en la API: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

Como puede ver, este método devuelve una cadena, como lo hacen la mayoría de los métodos que operan en una cadena. Devuelven el String modificado y dejan intacto el String original.

Respondido 28 Jul 12, 12:07

Tuve el mismo problema e hice poca manipulación en el método trim() de Java.
Puedes usar este código para recortar:

public static String trimAdvanced(String value) {

        Objects.requireNonNull(value);

        int strLength = value.length();
        int len = value.length();
        int st = 0;
        char[] val = value.toCharArray();

        if (strLength == 0) {
            return "";
        }

        while ((st < len) && (val[st] <= ' ') || (val[st] == '\u00A0')) {
            st++;
            if (st == strLength) {
                break;
            }
        }
        while ((st < len) && (val[len - 1] <= ' ') || (val[len - 1] == '\u00A0')) {
            len--;
            if (len == 0) {
                break;
            }
        }


        return (st > len) ? "" : ((st > 0) || (len < strLength)) ? value.substring(st, len) : value;
    }

Respondido 25 Jul 15, 09:07

La función Trim devuelve una nueva copia de la cadena, con los espacios en blanco iniciales y finales omitidos.

rank = rank.trim();// This will remove and save rank without leading and trailing spaces

dará el resultado que desea.

El método de reemplazo no funcionará si pasa una cadena vacía para el reemplazo.

Respondido 28 Jul 12, 12:07

Si no está seguro acerca de los espacios, le sugiero que use expresiones regulares para extraer el número. Use "((-|\\+)?[0-9]+(\\.[0-9]+)?)+" regex extraerá la cadena de forma numérica. - kishor sharma

Te tomaré un consejo. Pero todavía me pregunto qué denotan los dos espacios. - terry li

@TerryLi A menos que nos brinde más información (como un pequeño programa de trabajo), nunca lo sabremos... - base

Dado que String en Java son inmutables, es decir, no se pueden cambiar. Debe reasignarlo a alguna cadena temporal. Y luego, usando esa cadena, puede convertirla en int.

String temp=rank.trim()
int te= Integer.parseInt(temp)

Respondido 28 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.