a.txt:
1,2,3
1,2,6
2,4,5
阅读和分割
String wynik = readFileAsString("a.txt");
String[] wyniki = wynik.split("");
我似乎无法找到在文件中的newLines之后将String拆分出来的方法,并且没有像这样指定(这是我在stackoverflow上的所有其他示例中找到的):
1,2,3\n1,2,6\n2,4,5\n
我的readFileAsString工作正常,它实际上就是这样读取的(没有拆分):
1,2,31,2,62,4,5
我知道我可以在我的文件中添加一些内容,以便将其拆分,例如
1,2,3t
...
但我也需要该文件清晰,没有任何不必要的符号。
整件事情看起来像这样:
public static String readFileAsString(String file) {
String line, results = "";
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
// readLine() zwraca nulla na koncu pliku, stad zabezpieczenie
while ((line = reader.readLine()) != null) {
results += line;
}
reader.close();
// return results;
} catch (IOException e) {
System.err.println("Error");
}
return results;
}
public static void main(String args[]) {
String wynik = readFileAsString("a.txt");
System.out.println(wynik);
String[] wyniki = wynik.split("[\\r\\n]+");
ArrayList<Trojka> wynikArrList = new ArrayList<Trojka>();
for (int i = 0; i < wyniki.length; i++) {
String[] temp1 = wyniki[i].split(",");
int m = 0;
int n = 0;
int t = 0;
try {
m = Integer.parseInt(temp1[0]);
} catch (Exception e) {
}
try {
n = Integer.parseInt(temp1[1]);
} catch (Exception e) {
}
try {
t = Integer.parseInt(temp1[2]);
} catch (Exception e) {
}
Trojka temp = new Trojka(m, n, t);
boolean newRecord = true;
for (Trojka a : wynikArrList) {
if (a.getM() == temp.getM() && a.getN() == temp.getN()) {
a.addT((int) temp.getT());
newRecord = false;
break;
}
}
if (newRecord) {
wynikArrList.add(temp);
}
}
wynik = "";
for (Trojka a : wynikArrList) {
wynik += a.getM() + "," + a.getN() + "," + a.getT() + "\n";
}
System.out.println(wynik);
}
}
答案 0 :(得分:2)
如果您想按换行符拆分字符串,请尝试使用此正则表达式:
String[] out2 = out.split("[\\r\\n]+");
更新: readFileAsString
的代码应如下所示:
public static String readFileAsString(String file) {
return new Scanner(new File(file)).useDelimiter("\\Z").next()'
}
public static String readFileAsString(List<String> Lines, String file) {
String line, results = "";
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
// readLine() zwraca nulla na koncu pliku, stad zabezpieczenie
while ((line = reader.readLine()) != null) {
results += line;
lines.add(line);
}
reader.close();
// return results;
} catch (IOException e) {
System.err.println("Error");
}
return results;
}
现在称之为:
ArrayList<Trojka> wynikArrList = new ArrayList<Trojka>();
String wynik = readFileAsString(wynikArrList, "a.txt");
答案 1 :(得分:1)
请注意,“新行”由不同的字符表示,具体取决于上下文。保存方法是使用split("\\R")
(在Java8 + 中可用)。
示例:
final String[] a = "one\ntwo\r\nthree\rfour\n".split("\\R");
assertArrayEquals(new String[]{"one", "two", "three", "four"}, a);
答案 2 :(得分:0)
您正尝试将字符串与""
分开,这是空字符串。如果您想使用换行符将其拆分,请改用"\n"
。但是,由于我们没有看到您如何读取文件(read, you probably a returning a concatenated string from
readFileAsString`,因此很难说它出错了。