英汉字典代码实现

英汉词典

设计流程

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

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; intercourse@n. 往来帐户

#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("************************ ");

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

        printf("************************ ");

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

        [mydic readFile];

        char a[100]={};

        char *getUserinput=a;

        char b='0';

        char c='0';

        while(1)

        {

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

            scanf("%c",&c);

            getchar();

            if(c=='2')

            {

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

                scanf("%c",&b);

                if(b=='1')

                {

                    getchar();

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

                    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:@" "];

                        NSLog(@" %@ ",s1);

                    }

                }

                else

                {

                    if(b=='2')

                    {

                        break;

                    }else

                    {

                        while(getchar()!=10){}

                        printf("输入有误 ");

                    }

                }

            }else if(c=='1')

            {

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

                scanf("%c",&b);

                if(b=='1')

                {

                    getchar();

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

                    scanf("%s",getUserinput);

                    getchar();

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

                    NSString *strenToch=[mydic ChineseToEnglish:input];

                    if(strenToch==NULL)

                    {

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

                    }else

                    {

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

                    }

                }

                else

                {

                    if(b=='2')

                    {

                        break;

                    }else

                    {

                        while(getchar()!=10){}

                        printf("输入有误 ");

                    }

                }

            }

        }

    }

    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(@" 字典文件出错,请检查"%@"处是否有相应文件 若没有请创建该文件!",PATH);

        exit(EXIT_FAILURE);

    }

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

    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.英译汉

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

http://www.cnblogs.com/PaulpauL/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/PaulpauL/p/4725762.html