0

我想拆分一条线(inputLine),它是

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")

但他们都没有工作和使用,replace但没有任何工作。splitreplaceAll

那么如何删除换行符以制作一行字符串?

更多细节:我想要它,所以我有两个单独的字符串

String Country = "Country: United Kingdom";

String City = "City: London";

那太好了

4

3 回答 3

1

你应该而不是使用System.out.println(line);use System.out.print(line);

新行是由println()通过写入行分隔符字符串来终止当前行的方法引起的。

于 2013-03-27T20:59:28.777 回答
0

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

读那个。readLine 方法不会在文本中返回任何回车或换行,并且会用换行符中断输入。因此,您的循环确实会接收整个文本块,但会逐行读取。

您还可以通过调用 println 获得额外的换行符。它将打印读入的行,添加新行,然后打印空白行 + 换行符,然后打印结束行 + 换行符,为您提供与输入完全相同的输出(减去几个空格)。

您应该使用 print 而不是 println。

于 2013-03-27T21:00:27.247 回答
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")
于 2013-03-27T21:10:17.027 回答