从字符串中删除unicode字符

时间:2015-11-08 16:13:08

标签: c++ regex unicode count

下面是我的代码片段,我可以删除一些转义字符。但问题是我无法从ParseLine()读取的给定字符串NewOutput中删除unicode字符。另外,我想计算包含unicode的行数。

例如,字符串NewOutput有3行:

  

@KayKay121把我拖到了图书馆。现在我必须富有成效\ ud83d \ udc94 https://t.co/HjZR3d5QaQ(时间戳:星期四10月29日17:51:50 +0000 2015)

     6A已决定推迟最后投票,直至执行委员会审理上诉。似乎设定了:7个地区。 (时间戳:星期四10月29日17:51:51 +0000 2015)

     

@i_am_sknapp感谢关注我们,Seth。 (时间戳:星期四10月29日18:10:49 +0000 2015)

这对我很有帮助:)谢谢!!!

if (readtweetfile.is_open()) 
{
    while (!readtweetfile.eof()) 
    {
        getline(readtweetfile,output);
        ParseLine(output,NewOutput);
        std::string unicod_string = output;

        if(NewOutput!=" ")
        {   
            std::string firstChar="Check";
            std::string secondChar;
            std::string checkingChar="";
            for (std::string::iterator it = NewOutput.begin(), end = NewOutput.end(); it != end; ++it)
            {
                if(firstChar=="Check")
                    firstChar = *it;
                else
                {
                    secondChar = *it;
                    checkingChar = firstChar + secondChar;

                    if(checkingChar=="\\\"")
                    {
                        writetweetfile << secondChar ; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\/")
                    {
                        writetweetfile << secondChar; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\\'")
                    {
                        writetweetfile << secondChar; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\\n")
                    {
                        writetweetfile << " " ; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\\t")
                    {
                        writetweetfile <<  " "; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\  ")
                    {
                        writetweetfile <<  " "; 
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\\\")
                    {
                        writetweetfile << secondChar;
                        firstChar="Check";
                        continue;
                    }
                    else if(checkingChar=="\\u")
                    {
                        writetweetfile << "unicode";
                        firstChar="Check";
                        continue;
                    }

                    writetweetfile << firstChar;
                    firstChar=secondChar;
                }   
            }
        }
        writetweetfile << std::endl;
    }
}

1 个答案:

答案 0 :(得分:0)

如果没有真正知道你想要的3个样本的输出 - 我想出了这个

\\(u|U)[a-zA-Z0-9]{4}|\\|\t|\n

这将找到unicode和转义字符

如果您需要不同的东西,请使用更多示例修改问题,更重要的是,您希望完成的输出是什么。