Обрезка строки Java не влияет

Настройка строки Java не удаляет для меня пробельный символ.

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

Выходной сигнал (1 ). Обратите внимание на пространство справа от символа 1.

Мне нужно удалить конечное пространство из строки rank, но ни rank.trim(), ни rank.replace(" ","") не удаляет его.

Строка rank остается неизменной в любом случае.

Изменить: Полный код::

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

Почему я не могу удалить это пространство?

Ответ 1

Исходный код этого веб-сайта показывает специальный html-символ  . Попробуйте выполнить поиск или замену следующих строк в строке java: \u00A0.

Это не разбитое пространство. Смотрите: У меня есть строка с "\u00a0" , и мне нужно заменить ее "" str_replace не работает

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

должен работать. Возможно, вместо \ добавить двойной \\.

Ответ 2

Вы должны присвоить результат обрезки обратно переменной String. В противном случае это не сработает, потому что строки в Java неизменяемы.

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

Ответ 3

Вы назначаете строку?

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

Не забывайте второе задание, или ваша обрезанная строка никуда не будет.

Вы также можете посмотреть такие вещи в API: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

Как вы можете видеть, этот метод возвращает String, как и большинство методов, которые работают с строкой do. Они возвращают модифицированную строку и оставляют исходную строку в такте.

Ответ 4

Символ является неразрывным пробелом и поэтому не удаляется методом trim(). Перебирайте символы и печатайте значение int каждого из них, чтобы узнать, какой символ вы должны заменить пустой строкой, чтобы получить то, что вы хотите.

Ответ 5

У меня была такая же проблема и я мало манипулировал методом java trim().
Вы можете использовать этот код для обрезки:

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

Ответ 6

Функция Trim возвращает новую копию строки с опущенными пробелами в начале и конце.

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

даст желаемый результат.

Заменить метод не будет работать, если вы передадите пустую строку для замены.

Ответ 7

Так как String в java неизменяемы, то они не могут быть изменены. Вам нужно переназначить его на некоторую временную строку. И затем, используя эту строку, вы можете преобразовать ее в int.

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