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 ...
随机推荐
- MFRCC522 SPI无法通讯【worldsing笔记】
用单片机于MRFC522与单片接时,加上485通讯后出现很诡异的像: 只要485芯片上有收到外部发送的信号时RC522就死掉,经过仿真卡在了SPI的收发部分(等待回复) u8 MFRC522Write ...
- iOS开发 autoResizingMask使用
autoResizingMask 是UIView的一个属性,在一些简单的布局中,使用autoResizingMask,可以实现子控件相对于父控件的自动布局. autoResizingMask 是UIV ...
- SliderSkin
<?xml version="1.0" encoding="utf-8"?> <s:Skin xmlns:fx="http://ns ...
- Hibernate级联操作 注解
EJB3 支持的操作类型 /** * Cascade types (can override default EJB3 cascades */ public enum CascadeType { AL ...
- 46 关于Linux的I/O重定向
I/O重定向是一个过程,这个过程捕捉一个文件.或命令.或程序.或脚本.甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件.或命令.或程序.或脚本. 1.I/O重定 ...
- SQLSERVER复制表的方法
1.复制表结构及数据 格式:select * into 新表名 from 要复制的表名 --例如:select * into temp from users 2.只复制表数据 格式 ...
- android---APN切换
android手机客户端在上传文件时,有时候会一直失败,其可能的原因是APN的设置.wap下的成功率极低,所以在进行文件上传时最好设置下 apn为net形式.下面是我在网上找的一些代码,是由wap转n ...
- iOS开发——UI篇OC篇&SpriteKit详解
SpriteKit详解 SpriteKit,iOS/Mac游戏制作的新纪元 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或 ...
- PHP为fopen,file_get_contents等函数请求web地址时增加Http头的方法
我们在使用fsockopen时可以方便的自定义自己请求的http头内容来访问某些对客户端请求头有特殊限制的网站,但是使用fopen,file_get_contents等函数请求web地址时怎么来灵活定 ...
- js之parentElement属性
<html> <head> </head> <body> <form name="a "> <table name ...