Java, как заменить некоторые символы в строке - PullRequest
0 голосов
/ 14 марта 2012

У меня есть массив, который хранит URL-адреса в формате String для меня. Перед загрузкой URL-адресов я должен убедиться, что в строках нет места. Я написал этот код, но ReplaceAll () ничего не меняет.

Скажите, пожалуйста, что здесь не так?

public NewsFeedItemList getNewsList() {
        String str;

        for(int i=0; i<newsFeedItemList.getImage().size(); i++){
            str = newsFeedItemList.getImage().get(i);
            Log.i("before>>>", str);
            str.replaceAll(" ", "%20");
            Log.i("after<<<<", str);
            newsFeedItemList.getImage().set(i, str);
        }

        return newsFeedItemList;
    }

Ответы [ 6 ]

7 голосов
/ 14 марта 2012

Строки являются неизменяемыми, это означает, что вы не можете изменить содержимое объекта String.Вам нужно сделать что-то вроде

String cleanedString = str.replaceAll(" ", "%20");

Метод replaceAll () - возвращает новую строку.

2 голосов
/ 14 марта 2012

Как уже говорилось другими авторами: String является неизменным, поэтому вы должны присвоить возвращаемое значение replaceAll для String.

Совсем как подсказка: взгляните на java.net.URLEncoder: http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

Этот класс помогает правильно форматировать URL и может обрабатывать все виды специальных символов - не только пробелы.

2 голосов
/ 14 марта 2012

Строка является неизменной, поэтому вам нужно присвоить ее обратно так: str = str.replaceAll(" ", "%20");

1 голос
/ 14 марта 2012

предложение не использовать replace метод,

с использованием str = URLEncoder.encode(str),

иногда не только пробел и есть еще одна необходимость поменять символ.

1 голос
/ 14 марта 2012

Обновлен ваш код со следующим кодом,

public NewsFeedItemList getNewsList () {String str;

    for(int i=0; i<newsFeedItemList.getImage().size(); i++){
        str = newsFeedItemList.getImage().get(i);
        Log.i("before>>>", str);
        str = str.replaceAll(" ", "%20");  // I have update here
        Log.i("after<<<<", str);
        newsFeedItemList.getImage().set(i, str);
    }

    return newsFeedItemList;
}
1 голос
/ 14 марта 2012

Вам просто нужно заменить строку

str.replaceAll(" ", "%20");

на

str=str.replaceAll(" ", "%20");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...