OC1_汉字拼音转换 练习
//
// 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_汉字拼音转换 练习的更多相关文章
- java中汉字自动转换成拼音
java中汉字自动转换成拼音 1.需要下载jar包 pinyin4j.2.5.0.jar ,加入到WEB-INF下的lib里边,右键add to bulid path. 2.[代码]PinYinUti ...
- C# 获取汉字拼音首字母
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...
- java 解析汉字拼音
pinyin4j的使用很方便,一般转换只需要使用PinyinHelper类的静态工具方法即可: String[] pinyin = PinyinHelper.toHanyuPinyinStrin ...
- MySQL数据库获取汉字拼音的首字母函数
需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以了,不过项目中有多处功能是需要这个效果的,并且 ...
- C#拼音转换,将简体中文转换成拼音
1. 要进行拼音转换操作,首先要引入几个文件,也就是用于操作拼音转换的文件,就是微软提供给开发者的一个类库 Microsoft Visual Studio International Pack 1.0 ...
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...
- C#获取汉字拼音
C#获取汉字拼音 using System; using System.Collections.Generic; using System.Text; using System.Text.Reg ...
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
首先下载Visual Studio International Pack 1.0,官方下载地址:http://www.microsoft.com/downloads/zh-cn/details.asp ...
- C++中获取汉字拼音首字缩写/全拼及生僻字的处理
最近一直在修改关于搜索不到生僻字的问题,最后得出结论:对生僻字的处理,办法只有一个,建立一个字库,然后查表找. 可以参考一下:http://download.csdn.net/detail/lshlw ...
随机推荐
- linux搜索jar内容
linux搜索 spring-beans-2.5.6.jar 内容 1.jar tvf spring-beans-2.5.6.jar -c 创建新的归档文件 -t 列出归档目录 -x 解压缩 ...
- ASP.Net Core-TagHelpers
当我们新建了一个.Net Core类型的Project时,我们会看到页面上有类似于这样的代码: 当我们运行项目,查看源代码会发现,浏览器中的就是Html代: 那么,为什么我们在页面写的代码会转化为ht ...
- [Java 7][msvcr100.dll] Error when load Eclipse
[Problem] After I updated to Java 7, I could not load Eclipse. Here comes the erros: Eclipse: eclips ...
- 【转】Android 全屏方案(隐藏NavigationBar)
http://www.07net01.com/2015/04/822292.html 在android4.0及其以上的版本中,出现了一个很屌的东西,叫做Navigation Bar,它和Status ...
- HDU 5433 Xiao Ming climbing dp
Xiao Ming climbing Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/ ...
- 7za 解压文件
7za.exe x -aoa 完美国际补丁.7z 7za.exe x -aoa 完美国际补丁.7z -o"C:\Users\Admin\AppData\Local\Temp\完美国际补丁&q ...
- Android 设置横屏或竖屏
方法一:在AndroidManifest.xml中配置 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上androi ...
- Eclipse安装ADT失败解决办法
Eclipse的版本是3.5.2,配置Android的开发环境时遇到问题…… 按照Android官方文档一步步安装,到了安装Eclipse的ADT插件时,提示“requires 'org.eclips ...
- android学习日记03--常用控件ListView
常用控件 8.ListView 列表视图,比如游戏的排行榜.列表数据可以根据屏幕大小自适应 列表的显示需要三个元素: a.ListVeiw:用来展示列表的View. b.适配器:用来把数据映射到Lis ...
- myql定义和查看语句
创建数据库: create database IF NOT EXISTS MY_TEST default charset utf8 COLLATE utf8_general_ci; 查看SQL语句 ...