//
// WordManager.h
// OC1_汉字拼音转换
//
// Created by zhangxueming on 15/4/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "WordItem.h" #define FILEPATH @"/Users/qianfeng/Downloads/Day15_复合类设计与字典/汉字拼音转换/汉字-拼音.txt" @interface WordManager : NSObject
{
NSString *_name;
NSMutableArray *_wordList;
} - (id)initWithName:(NSString *)name andFile:(NSString *)path; - (void)parseWordFile:(NSString *)path; - (NSString *)searchCharactersByWord:(NSString *)aWord options:(ToneMask)mask; + (void)userInterface; @end
//
// WordManager.m
// OC1_汉字拼音转换
//
// Created by zhangxueming on 15/4/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "WordManager.h" @implementation WordManager - (id)initWithName:(NSString *)name andFile:(NSString *)path
{
if (self = [super init]) {
_name = name; _wordList = [NSMutableArray array];
[self parseWordFile:path];
}
return self;
} - (void)parseWordFile:(NSString *)path
{
//1.读取文件
NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
if (!fileContent) {//判断文件是否读取成功
return;
}
//2.分割字符串
NSArray *fileArray = [fileContent componentsSeparatedByString:@"\n"];
NSLog(@"%@",fileArray[]);
//3.遍历数组解析
for (NSString *list in fileArray) {
if ([list compare:@""]==NSOrderedSame) {
continue;
}
WordItem *item = [[WordItem alloc] init];
NSArray *tempArray = [list componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"[]"]];
//NSLog(@"%@",tempArray[0]);
[item setWord:[tempArray objectAtIndex:] andCharacters:[tempArray objectAtIndex:]];
[self->_wordList addObject:item];
// NSLog(@"%@",_wordList); }
} - (NSString *)searchCharactersByWord:(NSString *)aWord options:(ToneMask)mask
{
for (WordItem *item in _wordList) {
NSRange range = [[item word] rangeOfString:aWord];
if (range.location != NSNotFound) {
return [item parseCharacters:mask];
}
}
return nil;
} + (void)userInterface
{
WordManager *wordManager=[[WordManager alloc] initWithName:@"汉字拼音-转换器" andFile:FILEPATH];
// for (WordItem *item in wordManager->_wordList) {
// [item print];
// }
char wordArray[]={};
scanf("%s", wordArray); NSString *word = [NSString stringWithUTF8String:wordArray] ;
NSLog(@"%@", [wordManager searchCharactersByWord:word options:NoneTone]);
// WordItem *it=[[WordItem alloc] init];
// [it print];
}
@end
//
// WordItem.h
// OC1_汉字拼音转换
//
// Created by zhangxueming on 15/4/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> typedef enum
{
ToneUpside=1L,
ToneBack,
NoneTone
}ToneMask; @interface WordItem : NSObject
{
NSString *_word;
NSString *_characters;
} - (id)init; - (void)setWord:(NSString *)aWord andCharacters:(NSString *)aCharacters; - (NSString *)word;
- (NSString *)characters; - (NSString *)parseCharacters:(ToneMask)option; - (void)print; @end
//
// WordItem.m
// OC1_汉字拼音转换
//
// Created by zhangxueming on 15/4/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "WordItem.h" @implementation WordItem
- (id)init
{
if (self = [super init]) { }
return self;
} - (void)setWord:(NSString *)aWord andCharacters:(NSString *)aCharacters
{
_word = aWord;
_characters = aCharacters;
} - (NSString *)word
{
return _word;
}
- (NSString *)characters
{
return _characters;
} - (NSString *)parseCharacters:(ToneMask)option
{
NSArray *wordArray = [_characters componentsSeparatedByString:@","];
switch (option) {
case ToneUpside:
return [wordArray objectAtIndex:];
case ToneBack:
return [wordArray objectAtIndex:];
case NoneTone:
{
NSString *str = [wordArray objectAtIndex:];
NSInteger len = [str length];
unichar ch = [str characterAtIndex:len-];
if (isdigit(ch)) {
return [str substringToIndex:len-];
}
return str;
}
}
return nil;
} - (void)print
{
NSLog(@"汉字: %@ 拼音: %@", [self word], [self characters]);
} @end
//
// main.m
// OC1_汉字拼音转换
//
// Created by zhangxueming on 15/4/27.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "WordManager.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
[WordManager userInterface];
}
return ;
}

OC1_汉字拼音转换 练习的更多相关文章

  1. java中汉字自动转换成拼音

    java中汉字自动转换成拼音 1.需要下载jar包 pinyin4j.2.5.0.jar ,加入到WEB-INF下的lib里边,右键add to bulid path. 2.[代码]PinYinUti ...

  2. C# 获取汉字拼音首字母

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

  3. java 解析汉字拼音

    pinyin4j的使用很方便,一般转换只需要使用PinyinHelper类的静态工具方法即可:    String[] pinyin = PinyinHelper.toHanyuPinyinStrin ...

  4. MySQL数据库获取汉字拼音的首字母函数

    需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以了,不过项目中有多处功能是需要这个效果的,并且 ...

  5. C#拼音转换,将简体中文转换成拼音

    1. 要进行拼音转换操作,首先要引入几个文件,也就是用于操作拼音转换的文件,就是微软提供给开发者的一个类库 Microsoft Visual Studio International Pack 1.0 ...

  6. AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)

    AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...

  7. C#获取汉字拼音

    C#获取汉字拼音 using System;  using System.Collections.Generic;  using System.Text;  using System.Text.Reg ...

  8. C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母

    首先下载Visual Studio International Pack 1.0,官方下载地址:http://www.microsoft.com/downloads/zh-cn/details.asp ...

  9. C++中获取汉字拼音首字缩写/全拼及生僻字的处理

    最近一直在修改关于搜索不到生僻字的问题,最后得出结论:对生僻字的处理,办法只有一个,建立一个字库,然后查表找. 可以参考一下:http://download.csdn.net/detail/lshlw ...

随机推荐

  1. 【3D研发笔记】之【数学相关】(一):坐标系

    现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍<3D数学基础:图形与游戏开发>而来,实现代码使用AS3,项目地址是:https://github.com/hammerc ...

  2. 【Stage3D学习笔记续】真正的3D世界(三):纹理效果

    混合模式: 代码 示例是<Stage3D指南>中的直接弄出来的,可以通过点击键盘上的Q.W.E这3个按键,更换混合模式.模型和纹理,可以直观的查看不同混合模式的效果,住:下方的地形使用&q ...

  3. HTML5要点(四)对象全整理

    最近在自学H5,一下整理出来一些主要用到的知识点 1.JavaScript 对象 JS Array JS Boolean JS Date JS Math JS Number JS String JS ...

  4. Fixed theorems

    Banach Schauder Bourbaki-Kneser

  5. 在ubuntu上面配置nginx实现反向代理

    1.下载nginx    官网:http://nginx.org/en/download.html    直接在服务器上下载 wget http://nginx.org/download/nginx- ...

  6. 今天写一些 有关iOS 多图片组合 成一张图片的问题。保持原像素不变

    1.要求:服务器给一张图片模板,要在模版上镂空,然后添加一些别的图片,然后组合成一张图,这个模版的像素 不是固定的,有可能比 当前手机屏幕大.所以,在组合截图的时候,有一定的要求. 贴代码: /** ...

  7. POJ 2003 Hire and Fire (Tree)

    题目:Hire and Fire 题目翻译成数据结构就是:建树,加结点,删除结点,打印结点.只有删除结点稍微复杂点,因为删除设计掉树的调整. 首先要考虑树怎么存储才能使解题更顺手. 1.我们要存储每个 ...

  8. net.ipv4.tcp_tw_recycle

    原创 2016-03-07 CFC4N 运维帮 本文为翻译英文BLOG<Coping with the TCP TIME-WAIT state on busy Linux servers> ...

  9. 《Linux内核修炼之道》 之 高效学习Linux内核

    http://blog.csdn.net/fudan_abc/article/details/5738436

  10. 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/GoodSync/Allway Sync/Compare Advance)

    关于文件同步的文章,已经很多次出现在异次元上了,因为它们很多都能实实在在提高工作便利性.比方说有我们熟悉的云端同步软件 Dropbox.金山快盘,以及曾经还介绍过可本地使用的 Allway Sync  ...