这是在Windows上。当我在类中创建的字符串中使用\ n时它起作用,但是当从文件中读取相同的字符串时它没有。
String[] string = str.split(" \\n| |\\n|\n");
文件中的字符串示例:
这是一个测试。\ n颜色:[蓝黄黑绿红] \ n日期:
如果我用来从文件中读取的代码具有任何相关性:
public static String getStringArray(String filename) {
try {
return IOUtils.toString(new FileInputStream(filename), Charset.defaultCharset());
} catch(IOException ex) {
Logger.getLogger(File.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
这是使用org.apache.commons.io.IOUtils。
答案 0 :(得分:1)
首先,名为String
的方法应该返回public static String[] getStringArray(String filename)
{
try
{
String content = IOUtils.toString(new FileInputStream(filename), Charset.defaultCharset());
String[] lines = content.split("(\\\\n|\\r?\\n)");
return lines;
} catch (IOException ex)
{
Logger.getLogger(File.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
,而不是public static String[] getStringArray(String filename)
{
try { return IOUtils.toString(new FileInputStream(filename), Charset.defaultCharset()).split("(\\\\n|\\r?\\n)"); }
catch (IOException ex) { Logger.getLogger(File.class.getName()).log(Level.SEVERE, null, ex); }
return null;
}
。
此外,正则表达式“(\\ n | \ r?\ n)”符合您的预期(根据我的理解)。
它通过文字“\ n”或换行符来打破这些行。
onCreate()
或者,以简化的方式:
onCreateView()
如果迭代返回的数组(使用示例字符串),您将得到:
这是一个测试。
颜色:[蓝黄黑绿红]
日期:
答案 1 :(得分:0)
使用“行结束”表达式\R
(在Java 8中引入)。
似乎你想要分隔空格或行结尾,即:
str.split("[ \R]+")