2015-11-08 4 views
-2

Ниже приведен фрагмент кода, в котором мне удалось удалить некоторые escape-символы. Но проблема в том, что я не могу удалить символы Unicode из заданной строки NewOutput, прочитанной из ParseLine(). Также я хочу подсчитать количество строк, содержащих unicode.Удалить символы Unicode из строки

Например строка NewOutput есть 3 строки, как:

@ KayKay121 потащил меня в библиотеку. Теперь я должен быть продуктивным \ ud83d \ udc94 https://t.co/HjZR3d5QaQ (timestamp: Thu Oct 29 17:51:50 +0000 2015)

6A решил отложить окончательное голосование до тех пор, пока исполнительные органы не услышат апелляции. Что кажется установленным: 7 регионов. (временная дата: чт 29 октября 17:51:51 +0000 2015)

@i_am_sknapp Спасибо, что следите за нами, Сет. (timestamp: Thu Oct 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

Где вы берете эти строки? Сохранен ли этот файл в каком-то формате? Например. если файл JSON, просто используйте парсер JSON, он будет декодировать эти escape-последовательности. Во-вторых, '\ ud83d \ udc94' является суррогатной парой (возможно, для эможи) для одного персонажа. – roeland

ответ

0

Ну фактически не зная, что вы хотели бы выход быть для 3-х образцов - я пришел с этим

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

Найдет Юникод и управляющие символы

Если вам нужно что-то другое, пересмотреть вопрос с большим количеством примеров и, что более важно, то, что вы хотели бы, чтобы конечный результат был.

Смежные вопросы