因此,我目前将一堆字符串标题存储在用户手机上的文件中,然后稍后阅读(当他们重新启动应用程序时)。我正在尝试读回字符串并将其拆分为我为其设置的分隔符但由于某种原因它将其拆分然后将字符串加倍...
例如,如果我存储了这些字符串
瑞奇(HAR)巴比(HAR)是(HAR)清凉(HAR)
(har)是我用来存储它们的分隔符。 (例如)
出于某种原因,当我在“har”
上使用分割功能时它给了我一个字符串数组,但是我存储了多少个字符串...所以字符串数组会有两个Ricky的两个Bobby的两个是两个很酷的。 说实话,我感到很茫然。几个小时一直盯着这个......有谁有任何想法?
line = BR.readLine();
String[] each = line.split("<TAG>");
for (int i = 0; i < each.length; i++) {
listOfCourses.add((each[i]));
//Toast.makeText(context, each[i], Toast.LENGTH_SHORT).show();
}
以下是将数据存储到用户手机的功能
//adds data into the classes file on user's phone
public void addClassesIntoFile(Context context, ArrayList<String> classList) {
try {
FileOutputStream fos = context.openFileOutput(CLASSLIST_FILENAME,
Context.MODE_PRIVATE | Context.MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fos);
for (int i = 0; i < classList.size(); i++) {
osw.write(classList.get(i) + "<TAG>");
}
osw.flush();
osw.close();
} catch (FileNotFoundException e) {
// catch errors opening file
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
我不相信你的分割功能是问题,而是认为它与代码的其他部分有关。
String
是否正确?或者你看到重复吗? addClassIntoFile
方法。由于您要附加到File
,请确保您没有重新添加已存在的值。除非您在某个时候删除该文件,否则它将在下次启动应用程序时保留。addClassIntoFile
,那么你的意思也是如此。 IE,意外地在给定对象上多次调用它。如果我对这一切都不正确,那么请在分割之前发布一个String
看起来像的例子,这样我们就可以确定给定的正则表达式是正确的。
答案 1 :(得分:0)
替换:
String[] each = line.split("<TAG>")`
用这个:
String[] each= line.split("[(har)]");
如果错了,请告诉我