эта тема обсуждалась здесь много, но ни одно из решений не работало для меня. Я хочу заменить часть строки, которую я получил из HTML. Получение и отображение HTML прекрасно работает, но я не могу удалить какие-либо части строки. Он действует так, как не находит его.
Посмотрите нижеприведенный код:
public class Main extends Activity {
public static String URL = "";
public static String htmlString;
public TextView mainText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
mainText = (TextView) findViewById(R.id.mainText);
constructURL();
getHtml();
htmlString.replaceAll("<head>", "hulo");
mainText.setText(htmlString);
}
public void getHtml() {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(URL);
HttpResponse response = httpClient.execute(httpGet, localContext);
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent()
)
);
String line = null;
while ((line = reader.readLine()) != null){
htmlString += line + "\n";
}
} catch (Exception e) {
}
}
public void constructURL() {
Time time = new Time();
time.setToNow();
String year = convertToString(time.year - 2000);
String month = convertToString(time.month + 1);
String monthDay = convertToString(time.monthDay);
URL = "http://www.gymzl.cz/bakalari/suplovani_st/tr" + year + month + monthDay + ".htm";
}
public String convertToString(int value) {
String text = "";
if(value < 10) text = "0";
text += String.valueOf(value);
return text;
}
}
Замена "hulo" не работает.
Прошу прощения за такой длинный код, но я все пробовал.
replaceAll
не обновляет вызывающую строку, вам нужно назначить ее обратно. Изменить это
htmlString.replaceAll("<head>", "hulo");
в
htmlString = htmlString.replaceAll("<head>", "hulo");
после вызова replaceAll он вернет замененную строку. вам нужно снова присвоить эту новую строку некоторому объекту
как показано ниже, снова присваивая его htmlString
htmlString = htmlString.replaceAll("<head>", "hulo");
htmlString.replaceAll("<head>", "hulo");
возвращает замененную строку, но не меняет htmlString
Так что прям сделай это так
mainText.setText(""+htmlString.replaceAll("<head>", "hulo"));
mainText.setText(htmlString.replaceAll("<head>", "hulo"));