2013-03-27 67 views
0

我想分割排隊(inputLine),這是的Java:的replaceAll和.split換行不行

Country: United Kingdom 
City: London 

所以我用這個代碼:

public void ReadURL() { 

    try { 
     URL url = new URL("http://api.hostip.info/get_html.php?ip="); 
     BufferedReader in = new BufferedReader(
     new InputStreamReader(url.openStream())); 

     String inputLine = ""; 
     while ((inputLine = in.readLine()) != null) { 
      String line = inputLine.replaceAll("\n", " "); 
      System.out.println(line); 
     } 

     in.close(); 
    } catch (Exception e) { 
     System.err.println(e.getMessage()); 
    } 
} 

時你運行的方法的輸出仍是

Country: United Kingdom 
City: London 

不喜歡它的彪是:

Country: United Kingdom City: London 

現在我已經使用

\n,\\n,\r,\r\n 

System.getProperty("line.separator") 

嘗試,但他們沒有工作,並且使用replacesplitreplaceAll但沒有任何工程。

那麼我該如何刪除換行來創建一行字符串?

更詳細:我想它,所以我有兩個單獨字符串

String Country = "Country: United Kingdom"; 

String City = "City: London"; 

這將是巨大

+0

嗯,還有你使用'System.out.println'不'System.out.print' – thatidiotguy 2013-03-27 20:58:56

回答

1

你應該的,而不是使用System.out.println(line);使用System.out.print(line);

新行是由println()方法造成的,該方法通過寫入行分隔符字符串來終止當前行。

+0

哇我甚至沒有意識到,我知道這將是明顯的事情 - – 2013-03-27 21:05:08

0

http://docs.oracle.com/javase/1.5.0/docs/api/java/io/BufferedReader.html#readLine()

請閱讀。 readLine方法不會返回任何回車符或文本中的新行,並會通過換行符來中斷輸入。所以你的循環會佔用整個文本塊,但它會逐行讀取它。

您還可以通過調用println獲得額外的換行符。它會將您的行打印爲已讀入,添加一個新行,然後打印空行+換行符,然後打印結束行+換行符,爲您提供與輸入完全相同的輸出(減去幾個空格)。

您應該使用print而不是println。

0

我將在番石榴Splitter.MapSplitter

勸考慮看看你的情況:

// input = "Country: United Kingdom\nCity: London" 
final Map<String, String> split = Splitter.on('\n') 
    .omitEmptyStrings().trimResults().withKeyValueSeparator(": ").split(input); 
// ... (use split.get("Country") or split.get("City")