【问题标题】:Android Dictionary app安卓词典应用
【发布时间】:2017-01-17 10:14:49
【问题描述】:

我将创建一个安卓词典应用程序,其目标是将我的母语(Zazaki)翻译成土耳其语。
我有 2 个文件,格式如下:

Zazaki 到土耳其语单词文档 禁止:ev ====> 家

土耳其语到 Zazaki ev: ban, çe ===> 家

在我看来,首先将冒号之前的单词作为键,冒号之后作为值。
然后将其放入数据库中。

我的问题是:
“我每次都要做这个操作吗?
如何通过不将单词列表文档导入我的数据库来使此数据库可供每次下载使用?

【问题讨论】:

  • 为什么不使用预填充的数据库并使用它来发布您的应用程序呢?您只需要 2 个包含单词及其唯一 ID 的表(每种语言一个表)和一个连接表之间 ID 的连接器表。所以你会建立一个双向的多对多关系。
  • 我检查您关于预填充数据库的答案。在那种情况下我应该使用 2 个数据库吗?
  • 没有。一个 db 可以包含任意数量的表。

标签: android database android-studio dictionary


【解决方案1】:

首先,如果你有excel,通过''分割并删除不需要的结果列,将word文档制作成数据库是很容易的。然后您可以将其导出,例如成 .csv 文件。

根据您的要求,我将使用以下伪代码作为我的代码指南:

int currIndex = 0;
string key, value;
while(!EndOfFile){
    currIndex = find('=');
    key = getWordBeforeCurrentIndex();
    currIndex = find('>');
    value = getWordAfterCurrentIndex();
    myDictionary.Add(key, value);
}

把它变成真正的代码,瞧——你得到了一个将文档解析成字典的应用程序。

如果您知道您的文档具有以下确切格式:

ev ====> 家

word2 ===> 翻译2

word3 ===> 翻译3

你当然可以利用这一点去

Dictionary myDict = new HashTable<string, string>();
InputStream wordDictionary = getResources().openRawResource(R.raw.wordDictionary);
DataInputStream myDIS = new DataInputStream(wordDictionary);

ArrayList<string> lines = new ArrayList<Lines>();
string currLine;
//Read document into arraylist:
while((myLine=myDIS.readline())!=null) list.add(myLine);
//Take each line, add left word as key, add right word as value:
foreach(line : lines){
    myDict.add(line.substring(0, line.indexOf(" ")), line.substring(line.indexOf(" ", line.indexOf(" ")+1));
}

【讨论】:

  • 我应该将word文档添加到资源中吗?
  • 要么这样,要么把它放在文件系统中并在那里找到它。应该谷歌“android从系统读取文件”,因为我现在想不出那个功能^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 2013-04-18
相关资源
最近更新 更多