2016-03-29 8 views
-1

Ich habe eine HTML-Datei wie untenString ersetzen druckt nicht den Wert in der Konsole

<html> 
<head> 
<title>Title</title> 
<link rel="stylesheet" type="text/css" href="er:#css" /> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta> 
</head> 
<body class="text" id="text"> 
<div class="chapter"> 
<a id="page1" /> 
</div> 
</body> 
</html> 

Ich versuche a id mit id num und mit Hilfe des folgenden Code zu ersetzen.

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URL; 
public class Test { 
    public static void main(String[] args) throws IOException { 
     String input = "file:///C:/Users/users/file.html"; 

     URL url= new URL(input); 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) { 
      if (inputLine.contains("a id")) { 
       inputLine.replace("a id", "?pb label ="); 
      } 
      System.out.println(inputLine); 
     } 
     in.close(); 
     } 
    } 

Aber wenn ich es in der Konsole drucke, ersetzt es nicht die Daten. Ich bekomme die folgende Ausgabe.

<html> 

Titel

das Wort nicht ersetzt zu werden. Wenn ich in diesem Fall eine debug, If-loop eingegeben habe, werden die Daten in der Konsole nicht ersetzt.

Bitte lassen Sie mich wissen, wo ich falsch liege und wie kann ich das beheben.

Dank

+0

als Bemerkung am Rande, während dies funktionieren könnte, einen richtigen HTML-Parser könnte eine bessere Lösung sein. – SomeJavaGuy

+1

Ich weiß nicht, warum nichts auf die Konsole gedruckt wird (da ich nach dem Überfliegen des Codes denke, dass es tatsächlich so ist), aber inputLine.replace ersetzt nicht den Inhalt des aktuellen String - Objekts, sondern gibt das Ergebnis als a zurück neues String-Objekt also 'inputline = inputline.replace (... 'ist das erste, was Sie in Ihrem Code beheben sollten. –

Antwort

6

String ist unveränderlich. Sie müssen das Ergebnis der replace zurück zu inputLine, weisen seit replace eine neue String zurückgibt:

inputLine = inputLine.replace("a id", "?pb label ="); 
Verwandte Themen