2016-12-02 6 views
3

Итак, у меня есть ассистент для C#, в котором мне нужно работать с текстовыми файлами, отдельными словами в запятых и другими пунктуационными знаками. Я выбираю сделать это следующим образом:C# Добавление знаков препинания

string Book1 = "@\\..\\Knyga1.txt"; 
string punctuation = " ,.?!;:\""; 
string Read1 = File.ReadAllText(Book1); 
string[] FirstFileWords = Read1.Split(punctuation.ToCharArray()); 

Но я столкнулся с проблемой ... Мои текстовые файлы предполагается, как книги, так что, очевидно, там будет несколько строк ... есть ли способ добавить «ключ ввода» или что-то еще, что мы будем называть вещью, чтобы сделать новую строку (извините за мой плохой английский) одной из знаков препинания? Потому что, работая с отдельными словами позже, например, распечатывая самые длинные слова, слова, которые находятся в начале строки 2 3 и т. Д., Занимают две строки в консоли.

+0

Для записи «клавишу ввода» также известен как возврат каретки или Новая линия – Fuzzybear

+2

@Fuzzybear В окнах, как правило, и другое. – juharr

ответ

5

Просто добавьте \r\n к списку. Это «ключ ввода», то есть «новая строка» - в ОС Windows, и это то, что возвращается Environment.NewLine.

string punctuation = " ,.?!;:\"\r\n"; 

\r означает «возврат каретки» и \n стендами для «перевода строки», которая при использовании вместе, называется «Новая линия» (как описано на выше MSDN странице и в других местах, как this SO answer).

Кроме того, существуют другие не очень распространенные символы «вертикальные пробелы» (см. my question here для справки). Таким образом, чтобы быть полным, я бы сделал это, чтобы включить «вертикальную вкладку», «форма корма», «следующая строка», «разделительную линию», а «пункта разделитель»:

string punctuation = " ,.?!;:\"\r\n\v\f\u0085\u2028\u2029"; 

Here's a Wikipedia article, который описывает все эти и другие символы пробелов.

+0

В чем разница между \ n и \ r? И что такое возврат каретки? – BligenN

+2

@BligenN \ n или оригинал оригинала означал просто спуститься по одной строке, а \ r или возврат каретки означал переход к началу строки. Поэтому вам нужно было как перейти к началу следующей строки. Это пишущая машинка. – juharr

+1

@BligenN - см. Обновление. –

4

Чтобы добавить новые строки в группе необходимо использовать новые строки и возврата каретки:

" ,.?!;:\"\r\n"; 
1

Если вы хотите, чтобы положить конец-строки вам нужно \n

1

Вы можете попробовать char.IsPunctuation, чтобы узнать, все знаки препинания

// scan all the characters an filter out punctuation ones (585): 
string punctuation = string.Concat(Enumerable.Range(0, char.MaxValue) 
    .Select(c => (char)c) 
    .Where(c => char.IsPunctuation(c))); 

вы можете добавить некоторые другие символы, которые технически не являются пунктуационные из них: пространство, разрыв строки, возврат каретки:

string punctuation = " \r\n" + 
    string.Concat(Enumerable.Range(0, char.MaxValue) 
    .Select(c => (char)c) 
    .Where(c => char.IsPunctuation(c)));