22 Stimmen

Java String trim hat keine Wirkung

Java String trim entfernt kein Leerzeichen für mich.

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

Die Ausgabe ist (1 ). Beachten Sie den Platz rechts von der 1.

Ich muss das Leerzeichen am Ende des Strings rank entfernen, aber weder rank.trim() noch rank.replace(" ","") entfernt es.

Der String rank bleibt einfach gleich.

Bearbeiten: Vollständiger Code:

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+")");
}

Warum kann ich das Leerzeichen nicht entfernen?

5 Stimmen

Verwenden Sie rank = rank.trim(); oder einfach rank.trim();? Die zweite wird nicht funktionieren.

0 Stimmen

Bitte geben Sie den trim() Code an, den Sie verwendet haben.

0 Stimmen

@TerryLi Vielleicht solltest du uns eine Idee geben, was (some method) macht.

64voto

Baz Punkte 35645

Der Quellcode dieser Website zeigt das besondere HTML-Zeichen . Versuchen Sie, Folgendes in Ihrem Java-String zu suchen oder zu ersetzen: \u00A0.

Das ist ein nicht umbrechbarer Leerzeichen. Siehe: Ich habe einen String mit "\u00a0" und muss ihn durch "" ersetzen

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

sollte funktionieren. Vielleicht ein doppeltes \\ anstelle des \ hinzufügen.

3 Stimmen

@TerryLi Siehst du, wenn du ausreichende Informationen bereitstellst, können wir dir helfen. Freut mich, dass ich helfen konnte :)

0 Stimmen

Es ist anzumerken, dass diese Antwort: stackoverflow.com/questions/1437933/…

8voto

Sergey Kalinichenko Punkte 694383

Sie sollten das Ergebnis von trim wieder der String-Variable zuweisen. Ansonsten funktioniert es nicht, weil Strings in Java nicht veränderbar sind.

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

4voto

JB Nizet Punkte 654813

Das Zeichen ist ein nicht-trennbares Leerzeichen und wird daher nicht durch die trim()-Methode entfernt. Iteriere durch die Zeichen und drucke den int-Wert von jedem, um zu wissen, welches Zeichen du durch einen leeren String ersetzen musst, um das zu bekommen, was du willst.

2voto

Julius Punkte 2744

Weisen Sie den String zu?

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

Vergessen Sie nicht die zweite Zuweisung, oder Ihr beschnittener String wird nirgendwohin gehen.

Sie können diese Art von Dingen auch in der API nachschlagen: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

Wie Sie sehen können, gibt diese Methode einen String zurück, wie die meisten Methoden, die auf einem String arbeiten, dies tun. Sie geben den modifizierten String zurück und lassen den Original-String intakt.

2voto

Ertuğrul Çetin Punkte 5071

Ich hatte das gleiche Problem und habe eine kleine Manipulation an Javas trim() Methode vorgenommen.
Du kannst diesen Code zum Trimmen verwenden:

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;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X