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[0]);
    //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:0] andCharacters:[tempArray objectAtIndex:1]];
        [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[20]={};
    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:0];
        case ToneBack:
            return [wordArray objectAtIndex:1];
        case NoneTone:
        {
            NSString *str = [wordArray objectAtIndex:1];
            NSInteger len = [str length];
            unichar ch = [str characterAtIndex:len-1];
            if (isdigit(ch)) {
                return [str substringToIndex:len-1];
            }
            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 0;
}
时间: 2024-08-07 21:16:48

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

汉字拼音转换类

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyPinYin { /// /// 汉字拼音转换类 /// public static class PinYinConverter { #region 数组信息 private static int[] pyValue = new int[] { -20319, -20317, -20304, -2029

汉字-拼音转换类

汉字转拼音 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

Java 解析汉字拼音

需要java包 :pinyin4j-2.5.0.jar pinyin4j的使用很方便,一般转换只需要使用PinyinHelper类的静态工具方法即可: String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('赵'); //该类还有其他的拼音转换形式,但是基本上用不到,就不介绍了 返回的数组即是该字符的拼音,如上例就是pinyin[0]=zhao,后面的数字代表声调,声调为5表示轻读,无声调.之所谓返回数组,是因为被判定的汉字有可能有多个读

C# 获取汉字拼音首字母

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西,直接上代码: /// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns&

取汉字拼音首字母的方法

近期在做一个按拼音首字母排序的ListView须要取汉字拼音首字母,Deomo下载地址:http://download.csdn.net/detail/u014649598/8494777,做了例如以下的方法: 代码例如以下: package com.android.pinyin; import java.io.UnsupportedEncodingException; import android.app.Activity; import android.os.Bundle; import a

Javascript汉字拼音互转

var PinYin = { charDict : "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTR

在vc中实现获取汉字拼音的首字母

在vc中实现获取汉字拼音的首字母 void GetFirstLetter(CString strName, CString& strFirstLetter){    TBYTE ucHigh, ucLow;    int  nCode;    CString strRet;    strFirstLetter.Empty();    for (int i=0; i<strName.GetLength(); i++)    {        if ( (TBYTE)strName[i] <

unit PYIndexUnit 汉字--&gt;拼音声母处理

如要收藏此博客请立即按热键 <CTRL> + D 此博客网址 http://www.cnblogs.com/delphixx 我的电子邮箱地址是: [email protected] 联系我邮件标题写上 "博客园" 字样 否则邮件自动删除 我建议像我这样喜欢用AutoHotkey和Delphi编程的年轻人多尝试 多搜搜.多编程.多归类.多收藏.多上传.多刻录.多交流分享 把所有有用的AutoHotkey和Delphi源代码实例等等编程资源都 分类保存到2.5寸移动硬盘中并且

java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍

pinyin pinyin 是 java 实现的高性能中文拼音转换工具. 变更日志 创作目的 想为 java 设计一款便捷易用的拼音工具. 如何为 java 设计一款高性能的拼音转换工具 pinyin4j 特性 性能是 pinyin4j 的两倍 极简的 api 设计 支持转换长文本 支持多音字 支持多种拼音标注方式 支持中文分词 快速开始 准备 jdk 1.7+ maven 引入 <dependency> <groupId>com.github.houbb</groupId&