精华内容
下载资源
问答
  • 原始需求: 有联系人名字为‘张三’...需要将中文转换为拼音 提取拼音的首字母以及所对应原字符串的index 获取匹配首字母所对应原字符串的index 根据index高亮字符串 资源库 由于需要将汉字转换为拼音,因此需要

    原始需求:

    有联系人名字为‘张三’、‘张三丰’,搜索‘ZS’可以通过系统提供的Contacts.CONTENT_FILTER_URI搜索到。但是匹配字符串高亮时,无法智能将‘张三’高亮。

    细化需求

    1. 需要将中文转换为拼音
    2. 提取拼音的首字母以及所对应原字符串的index
    3. 获取匹配首字母所对应原字符串的index
    4. 根据index高亮字符串

    资源库

    由于需要将汉字转换为拼音,因此需要引入谷歌ContactsProvider源码里的core-libart.jar包和里面的一个源代码类:HanziToPinyin.java。想用最新的可以在谷歌源码里找到。

    要是报错:Conversion to Dalvik format failed with error 1
    在项目中新建一个文件夹mylib,把core-libart.jar从libs中移动到新建的mylib中,并右键add to build path

    代码

    添加一个数据类,用来存储匹配成功的字符下标。

    public class HighlightIndex {
        public final int start;
        public final int end;
        public HighlightIndex(int start, int end) {
            this.start = start;
            this.end = end;
        }
    }

    核心代码

    先获取中文全拼,再提取出首字母成一个姓名缩写字符串,在通过关键字匹配姓名缩写,最后将匹配成功的字符对应上原始字符串的下标。

    /**
         * 获取首字母缩略字符匹配的下标
         * @param input 原字符串
         * @param prefix 高亮字符串
         * @return 原字符串需要高亮的下标位置(start和end)List
         * @author zhuxh2
         * */
        public static ArrayList<HighlightIndex> getAcronym(String input, String prefix) {
    
            ArrayList<Token> tokens = HanziToPinyin.getInstance().getTokens(input);
            //姓名缩写
            StringBuilder acronym = new StringBuilder();
            //缩写字母index
            ArrayList<HighlightIndex> indexs = new ArrayList<HighlightIndex>();
            //匹配后的缩写字母index
            ArrayList<HighlightIndex> indexsResult = new ArrayList<HighlightIndex>();
    
            int index = 0;
            if (tokens != null && tokens.size() > 0) {
                for (Token token : tokens) {
                    if (Token.PINYIN == token.type) {
                        acronym.append(token.target.charAt(0));
                        indexs.add(new HighlightIndex(index, index+1));
                        index++;
                    } else {
                        acronym.append(token.source.charAt(0));
                        indexs.add(new HighlightIndex(index, index+1));
                        index = index + token.source.length();
                        while(index < input.length() && input.charAt(index) == ' ')
                            index++;
                    }
                }
                int start = indexOfWordPrefix(acronym, prefix);
                if(start != -1)
                    for(int j = start; j < start + prefix.length(); j++) {
                        indexsResult.add(indexs.get(j));
                    }
    
            }
            return indexsResult;
        }

    说一大堆没有直接来个源码干脆清晰
    没有源码的技术博客不是好猿猴
    附上源码

    展开全文
  • 汉字转拼音v1.2.html

    2020-04-15 22:37:42
    实现如下功能: 全拼不带声调 全拼带声调 全拼带数字声调 小写缩写 大写缩写 中文名字转英文 新增功能 拼音在文字上方
  • [转]汉字转换为拼音

    2010-11-09 15:28:00
    比如药品批发运销系统、车站客票售票系统中,往往会使用药品名字或车站名字拼音缩写来提高输入效率,比如“阿莫西林”就可以输入“AMXL”,“重庆”就可以输入“CQ”,因此这些信息的中文名保存数据库中是同时保存...
     

    汉字转换为拼音


    作者:蒋勇 http://www.kipway.com 转载请保留此行

      在要求使用操作速度的行业软件中,比如药品批发运销系统、车站客票售票系统中,往往会使用药品名字或车站名字的拼音缩写来提高输入效率,比如“阿莫西林”就可以输入“AMXL”,“重庆”就可以输入“CQ”,因此这些信息的中文名保存数据库中是同时保存它的拼音缩写,这样可用SQL语句中的“like”来查询。

      本文给出的就是解决上面问题的办法,在此,笔者给出在汽车客运站中我自己写的汉子转换为拼音的DLL动态连接库hz2py.dll,这个DLL是正规DLL,可以在VC,BC,VB,delph中使用,在VC中,你可以使用hz2py.lib隐式调用,其他开发环境中需要显示调用。

      在hz2py.dll只有一个C方式导出的函数:

    extern "C" char * PASCAL String2Py(const char *lpszSource);

      参数lpszSource的长度请限制在2048以内。对于非汉字字符,String2Py函数不做转换,汉字拼音字头转换为大写字母。在VC中的使用方法如下:

    在头文件里插入下面两行
    #pragma comment(lib,"hz2py.lib")
    extern "C" char * PASCAL String2Py(const char *lpszSource);

    使用例子:

    CString sztst=String2Py("重庆你好!");

    你会看到sztst的内容为"CQNH!"
    修改纪录:2004.10.13 感谢绵阳的朋友发现“传”字错误。

    转载于:https://www.cnblogs.com/jxnclyk/archive/2010/11/09/1872727.html

    展开全文
  • 实现如下功能: 全拼不带声调 全拼带声调 全拼带数字声调 小写缩写 大写缩写 中文名字转英文
  • 输入名字的首字缩写即可找到,如张三火(zsh) 张三 张三火 李四 李四水 var sel=””,timer=null; function spellList(){ /********(qiushuiwuhen 2002-9-20)***********/ with(window.event){ with...
  • 真的很难找,同人女们望眼欲穿了吧。这个是网上的达人翻译的...一部著名漫画书名字拼音首字母缩写,女性向,集合众多作者作品的合集,以虐恋向为主。 转载于:https://www.cnblogs.com/234jiao/archive/2007/05/11...
    真的很难找,同人女们望眼欲穿了吧。这个是网上的达人翻译的,所以要尊重他们的劳动成果。不可以到处帖,不要转载。

    提取码: 6316285432531837

    解压密码: 如果你是爱好者一定知道的。一部著名漫画书名字的拼音首字母缩写,女性向,集合众多作者作品的合集,以虐恋向为主。

    转载于:https://www.cnblogs.com/234jiao/archive/2007/05/11/1295381.html

    展开全文
  • Java代码书写规范.doc

    2020-11-23 20:51:11
    符号名包括模块名变量名常量名方法函数/子程序名,数据区名,缓冲区名等符号命名通常应遵循以下规则 通用规则 1在所有命名中都应使用标准的英文单词或缩写不得使用拼音或拼音缩写除非该名字描述的是中文特有的内容如...
  • C++命名规范

    2010-03-05 10:20:00
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、...

    通则:
    1、在所有命名中,都应使用标准的英文单词或缩写。不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。

    2、所有命名都应遵循达意原则,即名称应含义清晰、明确。

    3、所有命名都不易过长,应控制在规定的最大长度以内。

    4、所有命名都应尽量使用全称。

    5、如果命名使用缩写,则应该使用《通用缩写表》(见附录)中的缩写;原则上不推荐使用《通用缩写表》以外的缩写,如果使用,则必须对其进行注释和说明。

    具体规范:

    1、工程名:

    不强制统一。

    2、文件名:

    ·基于工程名,开头3个字母应表明与哪一个工程相关。

    ·后面的字母应能够区别不同的功能。

    ·不区分大小写。

    ·长度不限于8.3格式,建议不多于30个字符。

    ·若文件用于定义和实现类,建议文件名与类名保持一致。

    3、函数名:

    ·参照 Windows API 的命名规范。

    ·推荐使用动宾结构。函数名应清晰反映函数的功能、用途。

    ·函数名最长不得超过30个字符。

    ·函数名第一个字母必须大写。

    ·全局函数必须以小写前缀"g"开头。

    4、变量名:

    原则上,变量名的命名遵从匈牙利记法。即:前缀 + 类型 + 变量名

    1)格式:

    [m_|s_|g_] type [class name|struct name] variable name

    2)解释:

    ·m_ : 类的成员变量

    ·ms_:类的静态成员变量

    ·s_ :静态全局变量

    ·g_ :普通全局变量

    ·类型缩写(type)

    ·char, TCHAR: ch

    ·char[],TCHAR[]: sz

    ·bool, BOOL: b

    ·int, __int16,__int32,__int64: n

    ·long: l

    ·double: d

    ·float: ft

    ·BYTE: by

    ·WORD: w

    ·DWORD: dw

    ·unsigned: u

    ·function: fn

    ·p :pointer

    ·lp :pointer

    变量名最长不得超过20个字符。

    5、类名:

    ·必须以大写"K"开头,后面字母反映具体含义,以清晰表达类的用途和功能为原则。

    ·接口必须以大写"I"开头,代表 Interface 。

    ·当名称由多个单词构成时,每一个单词的第一个字母必须大写。

    6、结构名、宏名、枚举名、联合名:

    ·全部大写。

    ·枚举名加小写前缀"enum"。

    例:

    typedef enum _KFILE_OPEN_MODE

    {

    enumOPEN_READONLY = 0,

    enumOPEN_READWRITE = 1,

    enumCREATE_ALWAY = 3

    } KFILE_OPEN_MODE;

    //·宏名加小写前缀"def"。

    例:

    #define defMAXNUMBER 100

    ·结构名加小写前缀"tag",之后必须以大写"K"开头。

    例:

    typedef struct tagKPOINT

    {

    int x;

    int y;

    } KPOINT;

    //·联合名加小写前缀"uni"。

    例:

    typedef union _VARIANT{

    char unichVal;

    int uninVal;

    long unilVal;

    float uniftVal;

    ...

    } VARIANT;

    C/C++源代码书写规范(试行)

    1. 在.h/.cpp的开头应有一段格式统一的说明,内容包括:

    a. 文件名 (FileName);

    b. 创建人 (Creater);

    c. 文件创建时间 (Date);

    d. 简短说明文件功能、用途 (Comment)。

    2. 除非极其简单,否则对函数应有注释说明。内容包括:功能、入口/出口参数,必要时还可有备注或补充说明。

    3. 每行代码的长度推荐为80列,最长不得超过120列;折行以对齐为准。

    例:HANDLE KSOpenFile(const char cszFileName[],

    int nMode);

    或者:

    BOOL KSReadFile(

    HANDLE hFile,

    void *pvBuffer,

    int nReadSize,

    int *pnReadSize

    );

    4. 循环、分支代码,判断条件与执行代码不得在同一行上。

    例:正确:

    if (n == -2)

    n = 1;

    else

    n = 2;

    不得写做:

    if (n == -2) n = 1;

    else n = 2;

    5. 指针的定义,* 号既可以紧接类型,也可以在变量名之前。

    例:可写做:int* pnsize;

    也可写做:int *pnsize;

    但不得写做:int * pnsize;

    6. 在类的成员函数内调用非成员函数时,在非成员函数名前必须加上“::”。

    7. 函数入口参数有缺省值时,应注释说明。

    例:

    BOOL KSSaveToFile(

    const char cszFileName[],

    BOOL bCanReplace /* = TRUE */

    );

    或者:

    BOOL KSSaveToFile(

    const char cszFileName[],

    BOOL bCanReplace // = TRUE

    );

    8. else if 必须写在一行。

    9. 与‘{’、‘}’有关的各项规定:

    9.1‘{’、‘}’应独占一行。在该行内可有注释。

    例:正确:

    for (i = 0; i < cbLine; i++)

    { // .....

    printf("Line %d:", i);

    printf("%s\n", pFileLines);

    }

    不得写做:

    for (i = 0; i < cb; i++)

    { printf("Line %d:", i);

    printf("%s\n", pFileLines);

    }

    9.2‘{’必须另起一行,‘{’之后的代码必须缩进一个Tab。‘{’与‘}’必须在同一列上。

    例:正确:

    if (i > 0)

    {

    m = 1;

    n++;

    }

    不得写做:

    if (i > 0) {

    m = 1;

    n++;

    }

    例外:

    if (i == 0)

    { ASSERT(FALSE); return; }

    9.3 在循环、分支之后若只有一行代码,虽然可省略‘{’、‘}’,但不推荐这么做。若省略后可能引起歧义,则必须加上‘{’、‘}’。

    例:正确:

    if (n == -2)

    n = 1;

    else

    n = 2;

    或者:

    if (n == -2)

    { n = 1; }

    else if (n != nTemp)

    { n = 2; }

    else

    { n = 3; }

    不得写做:

    if (n == -2)

    n = 1;

    else if (n != nTemp)

    n = 2;

    else

    n = 3;

    不推荐:

    if (i < 1)

    { n = 1; }

    else

    {

    if (i == 1)

    { n = 2; }

    else

    {

    if (i > 1)

    { n = 3; }

    }

    }

    10. 与空格有关的各项规定。

    10.1 在所有两目、三目运算符的两边都必须有空格。在单目运算符两端不必空格。但在‘->’、‘::’、‘.’、‘[’、‘]’等运算符前后,及‘&’(取地址)、‘*’(取值)等运算符之后不得有空格。

    例:正确:

    int n = 0, nTemp;

    for (int i = nMinLine; i <= nMaxLine; i++)

    不得写做:

    int n=0, nTemp;

    for ( int i=nMinLine; i<=nMaxLine; i++ )

    10.2 for、while、if 等关键词之后应有1个空格,再接‘(’,之后无空格;在结尾的‘)’前不得有空格。

    例:正确:

    if (-2 == n)

    不得写做:

    if(-2 == n)

    if ( -2 == n )

    等等。

    10.3 调用函数、宏时,‘(’、‘)’前后不得有空格。

    例:正确:

    printf("%d\n", nIndex);

    不得写做:

    printf ("%d\n", nIndex);

    printf( "%d\n", nIndex );

    等等。

    10.4 类型强制转换时,‘(’‘)’前后不得有空格

    例:可写做:

    (KSFile*)pFile;

    也可写做:

    (KSFile *)pFile

    不得写做:

    ( KSFile* )pFile

    ( KSFile * ) pFile

    11. 与缩进有关的各项规定

    11.1 缩进以 Tab 为单位。1 个 Tab 为 4 个空格

    11.2 下列情况,代码缩进一个 Tab:

    1. 函数体相对函数名及‘{’、‘}’。

    例:

    int Power(int x)

    {

    return (x * x);

    }

    2. if、else、for、while、do 等之后的代码。

    3. 一行之内写不下,折行之后的代码,应在合理的位置进行折行。若有 + - * / 等运算符,则运算符应在上一行末尾,而不应在下一行的行首。

    11.3 下列情况,不必缩进:switch 之后的 case、default。

    例:

    switch (nID)

    {

    case ID_PLAY:

    ......

    break;

    case ID_STOP:

    ......

    break;

     

    default:

    ......

    break;

    }

    转载于:https://www.cnblogs.com/goodness/archive/2010/03/05/1678910.html

    展开全文
  • C++ 命名规则

    2011-11-15 12:59:11
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、...
  • C++命名规范.doc

    2011-10-30 07:45:09
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、...
  • 最差的命名就是使用中文、拼音、拼音缩写、中英混搭,接下来要么是模仿式命名,要么干脆就随意命名。 模仿式命名典型的就是“××DAL”,说实话,我觉得类似于“UserDAL”这样的名字,我觉得太不美观了,一般这我...
  • C++命名书写规范

    2012-11-18 07:52:12
    来源:网易博客 链接:... 命名规范和C/C++源代码书写 ...不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵
  • c++命名

    2012-07-26 15:08:05
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、...
  • 程序员的价值绝对不在于...最差的命名就是使用中文、拼音、拼音缩写、中英混搭,接下来要么是模仿式命名,要么干脆就随意命名。 模仿式命名典型的就是“××DAL”,说实话,我觉得类似于“UserDAL”这样的名字,我...
  • 匈牙利命名法

    千次阅读 2007-08-26 14:02:00
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、...
  • 在撰写英文期刊文章时,经常需要在参考文献中对英文人名进行书写(全称、缩写),另外遇到中文名字拼音)时也需要适当地调整书写方式。以下主要分成两种形式:全称与缩写 以George Bush 为例,其中Bush是姓,...
  • C++规范

    2008-12-01 16:54:00
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名都不易过长,应控制在规定的最大长度以内。 4、所有...
  • Sun-Java语言编码规范

    2014-08-20 14:43:19
    不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角, 声母、韵母等。  2、所有命名都应遵循达意原则,即名称应含义清晰、明确。  3、所有命名都不易过长,应控制在规定的最大长
  • 摘录的匈牙利命名法

    2007-04-18 14:25:00
    c++命名书写规范 命名规范和C/C++源代码书写 来源...不得使用拼音或拼音缩写,除非该名字描述的是中文特有的内容,如半角、全角,声母、韵母等。 2、所有命名都应遵循达意原则,即名称应含义清晰、明确。 3、所有命名...
  • D200的库设置

    2012-01-19 15:41:38
    D200的库设置 ... 4、影像注释:我的名字拼音缩写  5、横竖方位:开启,方便图片的查看  其它未调整  二、播放菜单:  1、显示模式:全选  2、影像查看:关闭(可以省电),想查...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

中文名字拼音缩写