下面是我的代码片段,我可以删除一些转义字符。但问题是我无法从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;
}
}
答案 0 :(得分:0)
如果没有真正知道你想要的3个样本的输出 - 我想出了这个
\\(u|U)[a-zA-Z0-9]{4}|\\|\t|\n
这将找到unicode和转义字符
如果您需要不同的东西,请使用更多示例修改问题,更重要的是,您希望完成的输出是什么。