-1

Android アプリを開発していますが、テキスト ファイルを読み取る必要があります。テキスト ファイルを読み取ったらsave certain parts、データベースにアクセスする必要があります。テキスト ファイルには次のものが含まれます。

Title - Hello
Date - 03/02/1982
Info - Information blablabla

Title - New title
Date - 04/05/1993
Info - New Info

空白行を . として使用して、テキスト ファイルを 2 つに分割する必要があると考えましたseparator。次に、タイトルなどの個々の情報を取得し、タイトルとしてデータベースに保存する必要があります。これを行う方法はありますか?すべてのテキスト ファイルを読み取る方法を知っています。completeこれを使用してテキストファイルを読み取ります。

    TextView helloTxt = (TextView) findViewById(R.id.hellotxt);
    helloTxt.setText(readTxt());

}

private String readTxt() {

    InputStream inputStream = getResources().openRawResource(R.raw.hello);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i;
    try {
        i = inputStream.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return byteArrayOutputStream.toString();
}

私はちょうどこれの分割イベントについて疑問に思っていました. ありがとうございました

4

3 に答える 3

2

だから私があなたの質問を正しく理解しているなら、あなたは改行であなたのテキストを分割する何かを探します。したがって、両方の情報フィールドを取得して、テキストビューに配置できます。

この投稿を見てください:Java文字列を 改行で分割これは、テキストを行に分割する方法を示します。

また、空行なしでテキストを分割する場合は、次を使用します。

String.split("[\\r\\n]+")

これは、同じスレッドの他のユーザーによっても説明されました。

グッドラック、
ダニエル

于 2012-12-17T15:41:12.293 に答える
0

パターンとマッチャーで正規表現を使用できます。

    String inputString = "Title - Hello\n" //
        + "Date - 03/02/1982\n" //
        + "Info - Information blablabla\n" //
        + "Title - New title\n" //
        + "Date - 04/05/1993\n" //
        + "Info - New Info\n";

    Pattern myPattern = Pattern.compile("Title - (.*)\nDate - (.*)\nInfo - (.*)");
    Matcher m = myPattern.matcher(inputString);
    String title = "";
    String date = "";
    String info = "";

    while (m.find()) {
        title = m.group(1);
        date = m.group(2);
        info = m.group(3);
        System.out.println("Title : [" + title + "] Date : [" + date + "] Info : [" + info + "]");
    }

このコードは以下を返します:

Title : [Hello] Date : [03/02/1982] Info : [Information blablabla]
Title : [New title] Date : [04/05/1993] Info : [New Info]

より良い正規表現を見つけることができると確信していますが、私は専門家ではありません;)

于 2012-12-17T15:42:02.717 に答える
0

使用してみてくださいPattern.compile

    File sdcard = Environment.getExternalStorageDirectory();

    //Get the text file
    File file = new File(sdcard,"myaddress.txt");

    //Read text from file
    StringBuilder text = new StringBuilder();

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;

        while ((line = br.readLine()) != null) {
            text.append(line);
            text.append("####");
        }
    }
    catch (IOException e) {
        //You'll need to add proper error handling here
    }
System.out.println("text text text ====:: "+text.toString());

String your_string = text.toString();

Pattern pattern = Pattern.compile("####");
String[] strarray =pattern.split(your_string);

ノート :

これは私の目的で機能しています。テストしました。データをJSONまたはXMLファイルに保存するなどのより良い解決策がある場合は、コメントの他の提案として私の方法が望ましいです

于 2012-12-17T15:53:47.780 に答える