如何将第一行开头的所有行与java中的模式分组

时间:2018-02-04 10:22:25

标签: java sqlite

我有一个文档,其页面是在sqlite数据库中。每个页面看起来像这样:

<ar>some words in arabic</ar> :Some more words in arabic and urdu mixed <ar>again arabic</ar>: some more mixed <ar>again arabic</ar>again urdu arabic mixed
<ar>some words in arabic</ar> :Some more words in arabic and urdu mixed <ar>again arabic</ar>: some more mixed <ar>again arabic</ar>again urdu arabic mixed
Few lines in arabic urdu
Again sample line <ar>some arabic</ar> again mix
Again mixed
<ar>some words in arabic</ar> :Some more words in arabic and urdu mixed <ar>again arabic</ar>: some more mixed <ar>again arabic</ar>again urdu arabic mixed
<ar>some words in arabic</ar> :Some more words in arabic and urdu mixed <ar>again arabic</ar>: some more mixed <ar>again arabic</ar>again urdu arabic mixed
<ar>some words in arabic</ar> :Some more words in arabic and urdu mixed <ar>again arabic</ar>: some more mixed <ar>again arabic</ar>again urdu arabic mixed
Few lines in arabic urdu
Again sample line <ar>some arabic</ar> again mix
Again mixed

也就是说,我需要插入以<ar>或行组开头的行,其中第一行以<ar>标记开头,插入sqlite中的单独行。 所以流程应该像

  1. 选择以<ar>标记开头的第一行。
  2. 如果下一行不以<ar>开头,请将其添加到选区并重复。否则将此选择作为sqlite中的新行插入。 我不知道如何在Sqlite或使用java中执行此操作。 任何人都可以帮帮我吗?
  3. 修改 这是现有页面的表结构

    CREATE TABLE Content (
     PageNo integer primary key autoincrement,
     PageText string
    )
    

    新行的表结构

    CREATE TABLE Words (
     Id Integer primary key autoincrement,
     PageNo integer,
     WordLines
    )
    

    我必须将选定的行插入WordLines列。

    修改 功能

    String pageText = getPageText(pageNum);
    String[] wordLines = getWordLines(pageText);
    for(int i=0, i<wordLines.length, i++) {
     insertIntoDB(wordLines[i], pageNum);
    }
    

    我无法弄清楚函数getWordLines()的实现。

1 个答案:

答案 0 :(得分:1)

使用Java将每个文档拆分为要作为记录的字符串的字符串数组。例如,将文档文本作为名为documentText的字符串后,请使用

string[] stringArray = documentText.split(“[\r\n]+(?=<ar>)”);

将文档拆分为有一个或多个换行符后跟<ar>的点。

您可以对表中的每个文档执行此操作,并将stringArray中的字符串插入到临时表中。或者您可以将它们全部保存在内存中,直到将它们全部插入到表中。