Обрезка строки 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)