我想要分割一行(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
,split
和replaceAll
,但没有任何效果。
那么如何删除换行符以生成一行String?
更多细节:我想要它所以我有两个单独的字符串
String Country = "Country: United Kingdom";
和
String City = "City: London";
那会很棒
答案 0 :(得分:1)
您应该使用System.out.println(line);
而不是System.out.print(line);
。
新行由println()
方法引起,该方法通过写行分隔符字符串来终止当前行。
答案 1 :(得分:0)
http://docs.oracle.com/javase/1.5.0/docs/api/java/io/BufferedReader.html#readLine()
阅读。 readLine方法不会在文本中返回任何回车符或新行,并且会通过换行符中断输入。所以你的循环确实会占用整个文本块,但它会逐行读取。
您还可以通过调用println获得额外的换行符。它会在读入时打印您的行,添加一个新行,然后打印空白行+换行符,然后输出结束行+换行符,为您提供与输入完全相同的输出(减去几个空格)。
您应该使用print而不是println。
答案 2 :(得分: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")