2015-11-15 4 views
1

У меня есть .txt-файл с текстом, разделенным на несколько строк. Однако после I цикла с C# все символы через следующий кодКак обнаружить новые символы линий?

public static void printChars(string text) 
{ 
    char[] myChars = text.ToCharArray(); 
    foreach (char ch in myChars) 
    { 
     System.Console.Write(ch + @" - \u" + ((int)ch).ToString("X4") + ", "); 
    } 
    System.Console.WriteLine(); 
} 

Проблема в том, что я не могу видеть символы новой строки (например, u000A) или что-то, так как есть много текста, начиная с новой строки (например, u000D). Как определить этот тип символов Юникода?

+0

не имеет значения для вашей проблемы, но вы можете напрямую перебирать свою переменную 'string text', не создавая соответствующего' char [] 'вызова' ToCharArray() '. 'foreach (char ch в тексте)' производит одинаковый результат вашего кода –

+0

* Проблема в том, что я не вижу никаких новых символов строки или чего-то еще. Что это значит? Что не происходит, что вы ожидаете, должно произойти? Пожалуйста, уточните свой вопрос. –

+1

Я не понимаю, что вам нужно получить от вашего кода. Вы пытаетесь идентифицировать каждый вид «новой строки», доступный в Unicode? если это так, [this] (https://en.wikipedia.org/wiki/Newline#Unicode) может помочь –

ответ

2

Наиболее очевидным объяснением является то, что вы правильно написали свой код и используете StreamReader для чтения текстового файла. Его метод ReadLine() возвращает строку текста из файла без терминатора линии. Чрезвычайно важно, что он работает именно так, терминаторы линий не очень стандартизированы.

Не единственный способ преобразования содержимого файла, его кодировка также важна. Еще одна деталь, которая не очень стандартизирована, все еще много текстовых файлов, которые не используют utf-8.

Если вы хотите видеть необработанные байты в файле, вы должны использовать FileStream. И байт [] вместо строки.

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