2010-03-18 4 views
9

Я получаю из другой строки класса, которая должна быть преобразована в char. Обычно он содержит только один символ, и это не проблема. Но контрольные символы я получаю как «\\ n» или «\\ t». Есть ли стандартные методы для преобразования этого в конец или табулятор или мне нужно самому разобрать его?Преобразование строки в char

Редактировать: Извините, парсер есть одну косую черту. Я получаю «\\ t»

+0

Класс, в котором вы получаете строку, выполняет что-то нестандартное, поэтому символы больше не являются управляющими символами, они были преобразованы (без изменений) в более длинную литеральную строку. Вам просто нужно иметь специальный случай, чтобы справиться с ними. – rohancragg

+1

это выглядит знакомо !: http://www.infoqu.com/dev/c-programming/weeding-out-control-characters-in-c-30095-1/ – rohancragg

+1

Может быть, это глупый вопрос, но вы смотрите на значение в окне часов? Окно часов добавит дополнительные \, так что вы уверены, что строка «\\ t»? – Geoff

ответ

3

Новая линия:

string escapedNewline = @"\\n"; 
string cleanupNewLine = escapedNewline.Replace(@"\\n", Environment.NewLine); 

ИЛИ

string cleanupNewLine = escapedNewline.Replace(@"\\n", "\n"); 

Tab:

string escapedTab = @"\\t"; 
string cleanupTab= escapedTab.Replace(@"\\t", "\t"); 

Обратите внимание на отсутствие символьной строки (т.е. я не использовал @ "\ т", потому что который не будет представлять собой вкладку)

В качестве альтернативы вы можете рассмотреть Regular Expressions, если вам нужно заменить ряд различных шаблонов строк.

Вы, вероятно, следует написать функцию полезности для инкапсуляции общего поведения выше для всех возможных Escape Sequences

Тогда вы бы написать несколько Unit Tests для покрытия каждого из случаев вы можете думать.

Когда вы сталкиваетесь с любыми ошибками, вы добавляете дополнительные модульные тесты для покрытия этих случаев.

UPDATE

Вы могли бы представлять собой вкладку в XML с помощью специальной последовательности символов:

	see this article

This article относится к SQL Server, но также может иметь отношение к C# также?

Чтобы быть абсолютно уверенным, вы можете попробовать создать строку с вкладкой в ​​ней и поместить ее в некоторый XML (программно) и с помощью XmlSerializer сериализовать это в файл, чтобы увидеть, что такое вывод, тогда вы можете быть уверены что это будет верно «туда-обратно», строка с вкладкой все еще в ней.

+0

Кажется, что это только доступный вариант. –

17

Я предполагаю, что вы имеете в виду, что класс, который отправляет вам данные, отправляет вам строку типа «\ n». В этом случае вы должны разобрать это самостоятельно с помощью:

Char.Parse(returnedChar) 

В противном случае вы можете просто бросить его в строку, как этот

(string)returnedChar 
+0

Этот класс читает его из файла. Поэтому, если файл содержит \ n, я получаю \\ n, это моя проблема. –

5

как об использовании string.ToCharArray()

Вы можете добавить соответствующие логики, чтобы обрабатывать все, что было в строке.

1

char.parse (string); используется для преобразования строки в char, и вы можете сделать наоборот char.нанизывать(); 100% решённый

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