将.txt文件解析为不同的数组

时间:2017-03-05 15:16:43

标签: java android parsing

我的.txt文件包含不同的数据。所有这些数据组织为3类。我需要获得第一个数组的一些数据,一些用于第二个,另一个用于第三个。怎么做?

.txt文件包含X部分,空格和#(用于分隔第2和第3类文本)

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();
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您应该在while循环中添加解析逻辑,每次迭代读取一行。

你可以在你的循环中做这样的事情:

.col-sm-6:nth-child(even) input {
    background: green !important;
  }

答案 1 :(得分:1)

以下是使用StringBuffer的内容的一种方法:

List<String> arr1 = new ArrayList<>();
List<String> arr2 = new ArrayList<>();
List<String> arr3 = new ArrayList<>();
Pattern p = Pattern.compile("part \\d+\\n(.*)\\n+part \\d+\\n(.*)#(.*)");
Matcher m = p.matcher(sBuffer);
while(m.find()) {
    arr1.add(m.group(1));
    arr2.add(m.group(2));
    arr3.add(m.group(3));
}

注意:在上面的代码中,为方便起见,我使用了ArrayLists而不是数组。但是,您可以使用List<String>轻松将String[]转换为myList.toArray(new String[0])数组。