iOS_中国汉字到拼音_pinyin4objc

最后效果图:

ViewController.h

//
//  ViewController.h
//  PinYin4Objc汉字转拼音演示demo
//
//  Created by beyond on 14-7-26.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
// 输入框
@property (nonatomic,weak) IBOutlet UITextField *textFieldInput;
// 显示用时多少
@property (nonatomic,weak) IBOutlet UILabel *labelTime;
// 显示字数多少
@property (nonatomic,weak) IBOutlet UILabel *labelWordsCount;
// 结果显示框
@property (nonatomic,weak) IBOutlet UITextView *textFieldResult;

// 转换button
@property (nonatomic,weak) IBOutlet UIButton *btnOK;
- (IBAction)btnOKClick:(id)sender;
@end

ViewController.m

//
//  ViewController.m
//  PinYin4Objc汉字转拼音演示demo
//
//  Created by beyond on 14-7-26.
//  Copyright (c) 2014年 com.beyond. All rights reserved.

/*
 PinYin4Objc 是一个流行的汉字(支持简体和繁体)转拼音的objc库,有下面特性:
 1.效率高,使用数据缓存。第一次初始化以后,拼音数据存入文件缓存和内存缓存。后面转换效率大大提高;
 2.支持自己定义格式化。拼音大写和小写等等;
 3.拼音数据完整,支持简体中文和繁体,与网络上流行的相关项目比,数据非常全,差点儿没有出现转换错误的问题。

 PinYin4Objc is a popular objective-c library supporting convertion between Chinese(both Simplified and Tranditional) characters and most popular Pinyin systems, it's performance is very efficient, data cached at first time. The output format of pinyin could be customized.

 性能比較:
 与之前的pinyin。POAPinyin和PYMethod等项目比較,PinYin4Objc的速度是非常快的

 声调格式化。比如:“刘”字的格式化后为“liu2”或“liu”或“liú”

 对特殊拼音ü的的显示格式。

比如“u:”或“v”或“ü”

 大写和小写的转换。比如:“liu2”或“LIU2”

 设置声调格式:
 outputFormat.setToneType(HanyuPinyinToneType);
 參数HanyuPinyinToneType有下面常量对象:

 HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,比如:liu2

 HanyuPinyinToneType.WITHOUT_TONE 无声调表示,比如:liu

 HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示。比如:liú

 设置特殊拼音ü的显示格式:

 outputFormat.setVCharType(HanyuPinyinVCharType);

 參数HanyuPinyinVCharType有下面常量对象:

 HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音。比如:lu:

 HanyuPinyinVCharType.WITH_V 以V表示该字符,比如:lv

 HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示

*/

#import "ViewController.h"
#import "PinYin4Objc.h"
@interface ViewController ()

@end

@implementation ViewController

// 点击button,转换汉字为拼音
- (IBAction)btnOKClick:(id)sender
{
    // 1,获取输入的文本
    NSString *inputText=_textFieldInput.text;
    // robust推断
    if ([inputText isEqual:@""]) {
        _labelTime.text= @"";
        _labelWordsCount.text = @"";
        _textFieldResult.text = @"";
        // 输入框活的焦点
        [_textFieldInput becomeFirstResponder];
        return;
    }
    // 2,实例化拼音格式化对象
    HanyuPinyinOutputFormat *outputFormat=[[HanyuPinyinOutputFormat alloc] init];
    // 3,设置拼音格式化对象的參数------重点
    /*
     typedef enum {
     ToneTypeWithToneNumber,数字1234表示声调
     ToneTypeWithoutTone,   没有声调
     ToneTypeWithToneMark   标记声调 这个用不了
     }ToneType;

     typedef enum {
     VCharTypeWithUAndColon,
     VCharTypeWithV,
     VCharTypeWithUUnicode
     }VCharType;
     */
    // 声调就是没有声调
    // [outputFormat setToneType:ToneTypeWithoutTone];
    // 声调是数字,跟在后面 海阔天空 <----->  hai3 kuo4 tian1 kong1
    [outputFormat setToneType:ToneTypeWithToneNumber];
    // 标记声调的这个用不了...
    // [outputFormat setToneType:ToneTypeWithToneMark];

    // V的表示方法:
    [outputFormat setVCharType:VCharTypeWithV];
    // V的表示方法:
    // [outputFormat setVCharType:VCharTypeWithUUnicode];
    // V的表示方法:
    // [outputFormat setVCharType:VCharTypeWithUAndColon];

    // 结果是大写还是小写,一般小写
    [outputFormat setCaseType:CaseTypeLowercase];
    // 4,记录转换的開始时间
    NSTimeInterval startTime=[[NSDate date] timeIntervalSince1970];
    // 5,拼音工具类的类方法转换汉字为拼音,參数1:输入的汉字,參数2:格式化器,參数3:seperator分隔符
    NSString *outputPinyin=[PinyinHelper toHanyuPinyinStringWithNSString:inputText withHanyuPinyinOutputFormat:outputFormat withNSString:@" "];
    // 6,记录转换的结束时间
    NSTimeInterval endTime=[[NSDate date] timeIntervalSince1970];
    // 7,计算用时
    NSTimeInterval totalTime=endTime-startTime;
    // 8,回显结果到界面
    _labelTime.text=[NSString stringWithFormat:@"共用时:%fs",totalTime];
    _labelWordsCount.text=[NSString stringWithFormat:@"字符数:%i 个",inputText.length];
    _textFieldResult.text=outputPinyin;
    NSLog(@"%@",outputPinyin);
    // 转换为秒
    // NSLog(@"seconds:%f",(endTime - startTime)/(float)CLOCKS_PER_SEC);

    // 调用自己定义方法,退出键盘
    [self exitKeyboard];

}
// 自己定义方法,退出键盘
- (void)exitKeyboard
{
    // 退出键盘
    // 方式1: self.view内部全部的文本框(包含子孙控件...)都退出第一响应者
    [self.view endEditing:YES];
    return;

    // 方式2:
    // 遍历uiview里面全部的控件 ,resignFirstResponder
    for (UIView *obj in self.view.subviews) {
        if ([obj isKindOfClass:[UITextField class]]) {
            [obj resignFirstResponder];
        }
    }
    // 方式3:
    // 在self.view的最开头,铺一个全屏的透明的button,连线,仅仅要在屏幕空白区域点击后,就能够调用上面的方式1,退出键盘
}

@end

storyboard截图:

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-28 21:30:11

iOS_中国汉字到拼音_pinyin4objc的相关文章

Python 爬虫的工具列表

这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab - 网络库(基于pycurl). pycurl - 网络库(绑定libcurl). urllib3 - Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 - 网络库. RoboBrowser - 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站

Python 爬虫库

0x00 网络 1)通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 – 网络库. RoboBrowser – 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站自动交互Python库. mecha

关于爬虫的一些工具。

网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 – 网络库. RoboBrowser – 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站自动交互Python库. mechanize -有

python 进阶(转自http://python.jobbole.com/82633/)

网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 – 网络库. RoboBrowser – 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站自动交互Python库. mechanize -有

Python 爬虫的工具列表 附Github代码下载链接

这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – Python HTTP库,安全连接池.支持文件post.可用性高. httplib2 – 网络库. RoboBrowser – 一个简单的.极具Python风格的Python库,无需独立的浏览器即可浏览网页. MechanicalSoup -一个与网站

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

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

城市列表-根据拼音首字母排序

今天我们就简单的实现一下城市的排序 读取我们城市的信息并通过listview展示 首先看一下我们的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layo

iOS_根据文字字数动态确定Label宽高

iOS7中用以下方法 - (CGSize)sizeWithAttributes:(NSDictionary *)attrs; 替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont *)font 方法 // iOS7_API_根据文字 字数动态确定Label宽高 // 设置Label的字体 HelveticaNeue Courier UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f]

简评QQ拼音输入法

用户界面: 这款输入法的用户界面还是比较多样化,有多种界面可以在设置中选择,简单的,可爱的,简约的种种类型都有,也可以在界面中选择使用小键盘,双拼模式 界面的颜色,界面上可以显示的字符数量,界面的大小等等,都可以进行设置,设计的还是较为人性化的. 记住用户选择: 导入用户词库功能,选择后即可按照提示很轻松地导入其他输入法的用户词库.词库网络同步.词库随身携带:一种自动同步功能,用户可以输入自己的QQ账号,将自己的个人词库和设置保存在网络上,这样就可以在任何可以上网的地方使用到自己的词库.根据用户