SuspensionIndexBar icon indicating copy to clipboard operation
SuspensionIndexBar copied to clipboard

多音字

Open zhixingren opened this issue 7 years ago • 8 comments

能识别常州市,不能识别长沙市,长春市,还有其他个别的也是这样!大神 ,应该怎么改呀,谢谢~

zhixingren avatar May 24 '17 02:05 zhixingren

遇到同样的问题,还是tinypinyin库的问题吧,现在依赖远程库,不能改源码啊。

codingWhenever avatar Sep 19 '17 06:09 codingWhenever

遇到同样问题,厦门对于字母应该是- X,但是对应到了S

fengjuan avatar Nov 22 '17 02:11 fengjuan

可以在特殊的城市前面加上一个谐音字,如长沙,写成常长沙,在显示的时候进行判断把常去掉就好了

SmallYQ avatar Mar 28 '18 10:03 SmallYQ

现在重庆市对应到Z,应该对应到C的啊,怎么处理呢

startong avatar Dec 27 '18 05:12 startong

要修改IndexBar源码,将源码的 Pinyin 依赖升级,还要添加 Pinyin 的两个依赖,最后修改 IndexBarDataHelperImpl 这个类 convert方法里面的 Pinyin.toPinyin

IphoneWeChat avatar May 21 '19 08:05 IphoneWeChat

@Override
public IIndexBarDataHelper convert(List<? extends BaseIndexPinyinBean> datas, Context context) {
    if (null == datas || datas.isEmpty()) {
        return this;
    }
    int size = datas.size();
    for (int i = 0; i < size; i++) {
        BaseIndexPinyinBean indexPinyinBean = datas.get(i);
        StringBuilder pySb = new StringBuilder();
        //add by zhangxutong 2016 11 10 如果不是top 才转拼音,否则不用转了
        if (indexPinyinBean.isNeedToPinyin()) {
            String target = indexPinyinBean.getTarget();//取出需要被拼音化的字段

            //遍历target的每个char得到它的全拼音
            for (int i1 = 0; i1 < target.length(); i1++) {
                //利用TinyPinyin将char转成拼音
                //查看源码,方法内 如果char为汉字,则返回大写拼音
                //如果c不是汉字,则返回String.valueOf(c)
                pySb.append(Pinyin.toPinyin(target.charAt(i1)).toUpperCase());
            }
            if (pySb.toString().equals("ZHONGQING")) {
                indexPinyinBean.setBaseIndexPinyin("CHONGQING");//修改重庆
            } else if (pySb.toString().equals("ZHANGCHUN")) {
                indexPinyinBean.setBaseIndexPinyin("CHANGCHUN");//修改长春
            } else {
                indexPinyinBean.setBaseIndexPinyin(pySb.toString());//设置城市名全拼音
            }
        } else {
            //pySb.append(indexPinyinBean.getBaseIndexPinyin());
        }
    }
    return this;
}

修改之前确认错误的多音是什么再进行修改

Munccccc avatar Jun 18 '19 09:06 Munccccc

非常感谢你!

| | eclipseandroid | | [email protected] | 签名由网易邮箱大师定制 在2019年6月18日 17:24,Z[email protected] 写道: @Override

public IIndexBarDataHelper convert(List<? extends BaseIndexPinyinBean> datas, Context context) {

if (null == datas || datas.isEmpty()) {

    return this;

}

int size = datas.size();

for (int i = 0; i < size; i++) {

    BaseIndexPinyinBean indexPinyinBean = datas.get(i);

    StringBuilder pySb = new StringBuilder();

    if (pySb.toString().contains("ZHONGQING")) {

        pySb.toString().replace("ZHONGQING", "CHONGQING");

    }

    //add by zhangxutong 2016 11 10 如果不是top 才转拼音,否则不用转了

    if (indexPinyinBean.isNeedToPinyin()) {

        String target = indexPinyinBean.getTarget();//取出需要被拼音化的字段



        //遍历target的每个char得到它的全拼音

        for (int i1 = 0; i1 < target.length(); i1++) {

            //利用TinyPinyin将char转成拼音

            //查看源码,方法内 如果char为汉字,则返回大写拼音

            //如果c不是汉字,则返回String.valueOf(c)

            pySb.append(Pinyin.toPinyin(target.charAt(i1)).toUpperCase());

        }

        if (pySb.toString().equals("ZHONGQING")) {

            indexPinyinBean.setBaseIndexPinyin("CHONGQING");//修改重庆

        } else if (pySb.toString().equals("ZHANGCHUN")) {

            indexPinyinBean.setBaseIndexPinyin("CHANGCHUN");//修改长春

        } else {

            indexPinyinBean.setBaseIndexPinyin(pySb.toString());//设置城市名全拼音

        }

    } else {

        //pySb.append(indexPinyinBean.getBaseIndexPinyin());

    }

}

return this;

}

修改之前确认错误的多音是什么再进行修改

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

IphoneWeChat avatar Jun 18 '19 09:06 IphoneWeChat

你们是把引用库拿出来到本地改源码处理这个问题的吗?

JanusKun avatar Feb 02 '21 09:02 JanusKun