tts 中如何判断字符串中是否含有中文

在语言处理中,接口只有一个,需要判别全英文、中英文,以便调用不同接口

主要工作为:

1、去除std::string 的符号  包括中英文,避免误判

    vector<string> remove_symbol_list {"。", "[", "’", "#", "$", "%", "&", "(", ")", "*", "(", ")", "+", "-", "/", "/", "<", "=", ">", "@", "★", "【", "】", "^", "_", "`", "{", "|", "}", "~", "]", "+", "“", "”", "‘", "’", "…", "\"", "\\", "'","!", "!", "。", "?", "、", ",", "?", ";", "《", "》" ," " ," ", ","};

这是需要处理的符号集合

处理: 对符号集每个符号,是否在std::string 查找位置,为真则去除这个字符,核心代码

    size_t pos = 0;
    while ((int)(pos = str.find(pattern)) != -1)
    {
        str.erase(pos, pattern.size());
    }

2、将std::string 转成char

char *p = (char*)input.data();

data 和c_str函数主要区别是data返回的char数组没有\0 结束符

3、对所有的文字进行判断,判断中英文主要是通过ASCII码,英文字母是41-90 && 97-122,中文规则,由两个字符来表示一个中文,因此,中文两个字符的高位都是1

   char temp ;

    while(temp = *p++){
        if((temp & 0x80) && (temp & 0x80) ){
            return TTSConfig::Simplified_Chinese;
        }
    }
    
    return TTSConfig::American_English;

由此可以返回相应所需的标识符,只要有中文就判断为中文,全英文才能调用英文接口

参考:

C/C++ -- 判断字符串中存在中文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值