我有带有不同数据的.txt文件。所有这些数据分为3类。我需要为第一个数组获取一些数据,为第二个获取一些数据,为第三个获取另一个数据。这该怎么做?
.txt文件包含X部分,空格和#(用于将文本从第二和第三类别中分离出来)
part 1
some data for 1st array
part 2
some data for 2nd array#some data for 3rd array
part 3
some data for 1st array
part 4
some data for 2nd array#some data for 3rd array
同时,我需要从每个类别收集数据:
从第1部分和第3部分开始,从第2部分和第4部分开始,在#之后
现在我陷入困境,我的代码接收了所有数据,我不知道下一步该怎么做。
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.text1);
textView.setMovementMethod(new ScrollingMovementMethod());
String data = "";
StringBuffer sBuffer = new StringBuffer();
InputStream is = this.getResources().openRawResource(R.raw.phrases);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
if ( is!= null){
try {
while ((data=reader.readLine()) !=null){
sBuffer.append(data + "\n");
}
textView.setText(sBuffer);
is.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
最佳答案
您应该在while循环中添加解析逻辑,每次循环读取一行。
您可以在循环中执行以下操作:
String[] parsedData = new String[3];
int parsingBlock = -1;
while ((data=reader.readLine()) !=null) {
if (parsingBlock >= 0) {
switch (parsingBlock) {
case 0: parsedData[0] = data; break;
case 1: {
String [] part2Data = data.split("#");
parsedData[1] = part2Data[0];
parsedData[2] = part2Data[1];
break;
}
case 2: parsedData[0] = parsedData[0] + data; break;
case 3: {
String [] part4Data = data.split("#");
parsedData[1] = parsedData[1] + part4Data[0];
parsedData[2] = parsedData[2] + part4Data[1];
}
default: break;
}
}
parsingBlock = -1;
if (data.equals("part 1")) {
parsingBlock = 0;
} else if (data.equals("part 2")) {
parsingBlock = 1;
} else if (data.equals("part 3")) {
parsingBlock = 2;
} else if (data.equals("part 4")) {
parsingBlock = 3;
}
}