英汉词典
设计流程
读取单词文件内容->解析文件内容->根据输入进行查找
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.英译汉
/******************************************************/