2014-01-29 2 views
-1

У меня есть следующий код: string str = "\"\\trandom string\\n\"";Как разобрать строку в кавычках

и теперь мне нужен способ, чтобы получить: string result = "\trandom string\n";

Просто нравится, как компилятор работает с строк в кавычках.
Обратите внимание, что строка str является случайной, поэтому любой символ, включая '\t', '\n', '\"' и т. Д., Может появиться в результате.

Мой вопрос: Есть ли существующий метод в C#, который я могу использовать? Если нет, есть ли у вас какие-либо предложения?

EDIT:
Что я хочу:
"\\t" ->'\t'
"\\n" ->'\n'
"\\\\" ->'\\'
и т.д. все, что не буквальным в кавычках

+3

Что именно вы пытаетесь достичь? – rae1

+0

@ rae1 Мне нужен скрипт для моей программы –

+0

Итак, вопрос в том, как преобразовать экземпляр строки в ее экранированное представление? –

ответ

0
System.Text.RegularExpressions.Regex.Unescape 
0

Идеальное время для простой конечной машины.

Редактировать: добавлено третье состояние для escape-символа, этот конечный автомат предполагает, что вы только заботитесь о escape-символах внутри кавычек, для тех, которые обрабатывают escape-символы в любом месте, где у него будет больше состояний, но я думаю, что это дает достаточно хороший строительный блок ,

//define somewhere in your class 
enum states { NOT_IN_QUOTES, IN_QUOTES, ESCAPE_CHAR } 

//inside a function 
states state = states.NOT_IN_QUOTES; 
string result = ""; 
foreach(char c in str) 
{ 
    switch(state) 
    { 
     case states.NOT_IN_QUOTES: 
      if (c == '\"') 
      { 
       state = states.IN_QUOTES; 
      } 
     break; 
     case states.IN_QUOTES: 
      if (c == '\"') 
      { 
       state = states.NOT_IN_QUOTES; 
      } 
      else if (c == '\\') 
      { 
       state = states.ESCAPE_CHAR; 
      } 
      else 
      { 
        result += c; 
      } 
     break; 
     case states.ESCAPE_CHAR: 
      state = states.IN_QUOTES; 
      result += c; 
     break; 
    } 
} 
return result; 
+0

Это может касаться только кавычек. Мне нужно иметь дело с такими вещами, как «\\ n», вещи, которые не являются буквальными в кавычках –

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