19 x 75 Bullnose Architrave/Skirting £1.02
我正在编写一个方法,逐行读取文件 - 这个方法可以正常工作。
然后我想使用"£"作为分隔符来分割每个字符串,并将其按以下格式写入一个
ArrayList<String>
:19 x 75 Bullnose Architrave/Skirting, Metre, 1.02
这是我的处理方式(
productList
是在 try 块外声明/实例化的 ArrayList
):try{
br = new BufferedReader(new FileReader(aFile));
String inputLine = br.readLine();
String delim = "£";
while (inputLine != null){
String[]halved = inputLine.split(delim, 2);
String lineOut = halved[0] + ", Metre, " + halved[1];//Array out of bounds
productList.add(lineOut);
inputLine = br.readLine();
}
}
字符串没有被分割,而且我一直得到一个“ArrayIndexOutOfBoundsException”错误。我对正则表达式不是很熟悉。我也尝试使用旧的“StringTokenizer”,但得到了相同的结果。
“£”作为分隔符是否有问题,还是其他原因?我想知道第二个标记是否无法识别为“String”。
任何建议都将很有帮助。
System.out.println(inputLine.indexOf(delim));
作为循环的第一个操作时,它会打印什么? - jlordoString delim = "\u00A3"
来确保它是正确的字符串,无论.java
文件的编码如何。 - Ian Roberts£
吗?另外,作为建议,你可以使用一个只有一行的小测试文件,并打印出所有内容,以查看问题所在。 - sleepsort