英汉字典代码实现

英汉词典

设计流程

读取单词文件内容->解析文件内容->根据输入进行查找

1.首先使用固定字符串接收文件读取出来的内容,再转存入数组,便于后面处理

2.循环遍历数组,将偶数行作为key,奇数行作为value存入字典1(此处指oc语言中的一个类)作为英译汉的词典,key与value反过来存入字典2

作为汉译英的字典,调用keyForValue方法取出Value. (字典文件内容格式如下:

#a

Trans:art. 一;字母A

#a.m.

Trans:n. 上午

#a/c

Trans:n. 往来帐户@往来:come - and - go; contact; [email protected] 往来帐户

#aardvark

Trans:n. 土猪

#aardwolf

Trans:n. 土狼

#aasvogel

Trans:n. 秃鹰之一种

#abaci

Trans:n. 算盘

#aback

Trans:ad. 向后地;朝后地

#abacus

Trans:n. 算盘

#abaft

Trans:ad. 向船尾@prep. 在...后

#abalone

Trans:n. 鲍鱼

).

3.将字典中的所有key取出,for循环分别与输入字符比较,此时比较的只是key的子串.

以下是具体代码实现:

/***************************************************/

/****************— main.m文件—********************/

/***************************************************/

#import <Foundation/Foundation.h>

#import "Dictionary.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

printf("************************\n");

printf("******欢迎使用英汉字典*****\n");

printf("************************\n");

Dictionary *mydic=[[Dictionary alloc] init];

[mydic readFile];

char a[100]={};

char *getUserinput=a;

char b=‘0‘;

char c=‘0‘;

while(1)

{

printf("1.汉译英 2.英译汉\n");

scanf("%c",&c);

getchar();

if(c==‘2‘)

{

printf("1.继续查询  2.退出查询\n");

scanf("%c",&b);

if(b==‘1‘)

{

getchar();

printf("请输入单词:\n");

scanf("%s",getUserinput);

getchar();

NSString *input=[[NSString alloc] initWithFormat:@"#%s",getUserinput];

NSString *strenToch=[mydic EnglishToChainese:input];

if(strenToch==NULL)

{

NSLog(@"没有找到!试试其他的吧!");

}else

{

NSArray *s=[[strenToch substringFromIndex:6] componentsSeparatedByString:@"@"];

NSString *s1=[s componentsJoinedByString:@"\n"];

NSLog(@"\n%@\n",s1);

}

}

else

{

if(b==‘2‘)

{

break;

}else

{

while(getchar()!=10){}

printf("输入有误\n");

}

}

}else if(c==‘1‘)

{

printf("1.继续查询  2.退出查询\n");

scanf("%c",&b);

if(b==‘1‘)

{

getchar();

printf("请输入单词:\n");

scanf("%s",getUserinput);

getchar();

NSString *input=[[NSString alloc] initWithUTF8String:getUserinput];

NSString *strenToch=[mydic ChineseToEnglish:input];

if(strenToch==NULL)

{

NSLog(@"没有找到!试试其他的吧!");

}else

{

NSLog(@"\n%@\n",[strenToch substringFromIndex:1]);

}

}

else

{

if(b==‘2‘)

{

break;

}else

{

while(getchar()!=10){}

printf("输入有误\n");

}

}

}

}

}

return 0;

}

/***************************************************/

/****************— Dictionary.h文件—****************/

/***************************************************/

#import <Foundation/Foundation.h>

#define PATH @"/Users/paul/Desktop/dict.txt"

@interface Dictionary : NSObject

{

NSMutableDictionary * _mydic;

NSMutableDictionary * _mydic1;

}

-(id)initWithMyDictionary;

-(void)setMydic:(NSMutableDictionary *)mydic;

-(NSDictionary *)mydic;

-(NSString *)EnglishToChainese:(NSString*)en;

-(NSString *)ChineseToEnglish:(NSString*)ch;

-(void)readFile;

@end

/***************************************************/

/****************— Dictionary.m文件—****************/

/***************************************************/

#import "Dictionary.h"

@implementation Dictionary

-(id)init

{

if(self=[super init])

{

_mydic=[[NSMutableDictionary alloc] init];

_mydic1=[[NSMutableDictionary alloc] init];

}

return self;

}

-(id)initWithMyDictionary

{

if(self=[super init])

{

_mydic=[[NSMutableDictionary alloc] initWithContentsOfFile:PATH];

}

return self;

}

-(void)readFile

{

NSString *s=[[NSString alloc] initWithContentsOfFile:PATH encoding:NSUTF8StringEncoding error:nil];  //读取文件内容到数组

if(s==NULL)

{

NSLog(@"\n字典文件出错,请检查\"%@\"处是否有相应文件\n若没有请创建该文件!",PATH);

exit(EXIT_FAILURE);

}

NSArray *arrs=[s componentsSeparatedByString:@"\n"];

for(int i=0;i<[arrs count]-1;i+=2)

{

[_mydic setValue:arrs[i+1] forKey:arrs[i]];

[_mydic1 setObject:arrs[i] forKey:arrs[i+1]];

}

}

-(NSMutableDictionary *)mydic

{

return _mydic;

}

-(void)setMydic:(NSMutableDictionary *)mydic

{

_mydic=[mydic initWithContentsOfFile:PATH];

}

-(NSString *)EnglishToChainese:(NSString*)en

{

en=[_mydic valueForKey:en];

return en;

}

-(NSString *)ChineseToEnglish:(NSString *)ch

{

int index=0;

NSArray *arr=[_mydic allValues];

for(int k=0;k<[arr count];k++)

{

NSString *sv=[arr objectAtIndex:k];

NSArray *sa=[sv componentsSeparatedByString:@"@"];

for(int h=0;h<[sa count]; h++)

{

NSArray *sm=[[sa objectAtIndex:h] componentsSeparatedByString:@";"];

for(int g=0;g<[sm count]; g++)

{

if(g==0)

{

NSArray *arrs=[[sm objectAtIndex:g] componentsSeparatedByString:@". "];

if([ch isEqual:[arrs lastObject]])

{

index=k;

goto RST;

}

}else if([ch isEqual:[sm objectAtIndex:g]])

{

index=k;

goto RST;

}

}

}

}

RST:

ch=[_mydic1 valueForKey:arr[index]];

return ch;

}

@end

/***************************************************/

/******************— 运行示例 —********************/

/***************************************************/

******************************

欢迎使用英汉字典

******************************

1.汉译英 2.英译汉

1

1.继续查询  2.退出查询

1

请输入单词:

苹果

2015-08-12 21:57:48.480 myDictionary[4293:219204]

apple

1.汉译英 2.英译汉

1

1.继续查询  2.退出查询

1

请输入单词:

电脑

2015-08-12 21:58:11.133 myDictionary[4293:219204]

computer

1.汉译英 2.英译汉

2

1.继续查询  2.退出查询

1

请输入单词:

computer

2015-08-12 21:58:27.470 myDictionary[4293:219204]

n. 电脑;电子计算机

1.汉译英 2.英译汉

1

1.继续查询  2.退出查询

1

请输入单词:

电子计算机

2015-08-12 21:58:41.094 myDictionary[4293:219204]

computer

1.汉译英 2.英译汉

1

1.继续查询  2.退出查询

1

请输入单词:

没有

2015-08-12 21:59:25.439 myDictionary[4293:219204]

wanting

1.汉译英 2.英译汉

1

1.继续查询  2.退出查询

1

请输入单词:

鼠标

2015-08-12 21:59:52.569 myDictionary[4293:219204]

mouse

1.汉译英 2.英译汉

/******************************************************/

时间: 2024-10-07 01:08:03

英汉字典代码实现的相关文章

【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)

全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdict开发日记:基于linux的简明英汉字典(三) [原创]shadowebdict开发日记:基于linux的简明英汉字典(四) 项目的github地址 承接上文. 现在来进行response模块的开发. 这一模块所完成的任务是,如果本地的词库中没有用户需要查询的词汇,那么就去网络上寻找到相应的词条作为

【IOS开发之Objective-C】自制英汉字典项目

1.前言 写这些文字,只是因为昨天纠结了大半天的时间都去怎样把文件中的字符串分离出来,按照英文单词和翻译的方式.最后是弄出来了,但是代码执行的效率很低,以致最后不得不放弃这种方法.说道最后其实就是分离字符串使用的规律不一样,造成的.但是它还是困扰了我大半天,其实就是自己的思维一直都挑不出来,这才是问题的核心.以前搞过单片机和电路什么的,自己的业余爱好也是搞单片机电路.现在开始了真正的纯软件编程就只好暂时放一段时间了.一直自己的思维也还是停留在面向过程的角度,还不能很好的以面向对象的方法取编程.最

【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)

全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdict开发日记:基于linux的简明英汉字典(三) [原创]shadowebdict开发日记:基于linux的简明英汉字典(四) 项目的github地址 实习的工作都这么忙,真是的.. 好不容易有时间写点博客,一鼓作气完成算了 承接上文 本文完成对本地数据库模块的开发. 由于只是非常轻量级的应用,就不劳

导入英汉文本,用字符串切割,泛型集合存储的英汉字典

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace 导入英汉文本,用字符串切割,泛型集合存储的英汉字典 { public part

Halo Word Dictionary(英汉字典)

插件介绍: 小伙伴们在工作学习中经常会用到在线翻译,而当你使用它时又要去打开一个新的标签,这就为大家推荐一款使用方便的英汉字典. Halo Word Dictionary是一款精巧易用的英汉字典,界面简洁舒适.包含单词表.划词查询.右键查询等功能. 使用说明: 在谷歌应用商店里安装该插件,并在浏览器的应用里启动它 功能介绍: ★ 单词表 - 查询一个单词,按下右上角的加号即可添加到左侧的单词表.[可以上下拖动来排序哦!]★ 划词查询 - 在网页中按住 Ctrl / Command 键并选中单词,

英汉字典

/* *Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:马广明 * 完成日期:2014 年 6 月 7 日 * 版 本 号:v1.0 * 问题描述:电子词典 */ #include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; class Word { publ

【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)

现在基本都在Linux下工作学习了,在看英文书籍的时候往往需要查字典,但是网查的话一是点来点去非常麻烦,二是广告多烦死人,加上linux平台上没有不错的字典,于是就产生了做一个本地的命令行web字典来满足自己的需求. 感谢pycharm这个精彩的IDE和Python这个强大而简单的语言,1天时间内帮助我开发了全部的功能. shadowebdict的实现思路是这样的: 0.输入中文或者英文 1.去本地数据库寻找相应的结果并显示. 2.如果本地数据库不存在该单词,则去互联网中寻找答案并存入数据库.

【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)

承接上文. 我们采用自顶而下的方式开发,因此,今天就解决程序的主要架构:main.py的开发. 自顶而下的方式,意味着我们需要假设已经开发好了两个模块:一个是LocalDB,一个是WebDict.LocalDB存储已经在网上查过的单词,而WebDict则在新词出现时,从网上获取回相应的资料. 比如我要查process这个单词的意思,第一次是由WebDict模块返回的意思,但第二次查process就是由LocalDB完成了. 然后定义输入输出.鉴于模块和main架构之间已经解偶了,因此,就不着急进

emacs中查询英汉字典

在用emacs查阅文档或上网的时候时常会遇到不认识的英文单词,若老是要切换到xdict查寻单词再切回emacs则显得太过繁琐.所幸,使用dict/dictd工具和dictionary.el可以实现直接在emacs中查询英文单词的释义. 1. 安装dict/dictd ubuntu下可以直接用apt-get安装 sudo apt-get install dict dictd 2. 安装英文-中文字典 sudo apt-get install dict-xdict dict-stardic 3. 安