2014-10-05 1 views
0

У меня есть этот код:Введите символ в C#

while(!sr1.EndOfStream) 
{ 
    radek1 = sr1.ReadLine(); 
    Console.Write(radek1); 
    Console.WriteLine(); 
    string[] split1 = radek1.Split(new char[] { ' ', '???' }); 
} 

Я прочитал массив строк из file.txt и мне нужно разделить с пробелами и входит, поэтому я хочу, чтобы обменять их? За что-то, что представляет собой Введите

+1

возможного дубликат [ Как вставить новую строку в строковый литерал?] (Http: // stackoverflow.com/questions/4085739/how-to-insert-newline-in-string-literal) – Fedor

ответ

5

Введите код, который вы, вероятно, имеете в виду New Line. В большинстве случаев, это будет то, что вы ищете:

string newLine = Environment.NewLine; //Updated to Sergey Volegov's suggested 

В большинстве случаев, Environment.NewLine равно "\r\n", но иногда это только \n так что разумнее использовать Environment.NewLine.

\r - возврат каретки.
\n - это новая линия.

Подумайте об этом как о пишущей машинке. Вы должны вернуться к началу строки (\r), а затем вниз линии (\n)

В связи с тем, что Environment.NewLine является строкой, вы будете хотеть, чтобы Split на String с, а не Char s:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }); 
+3

Использование Environment.NewLine вместо «\ r \ n» было бы еще лучше –

+0

Вы правы! Обновлен мой ответ :) –

2

использовать это:

Environment.NewLine.ToCharArray(); 

Как @Guffa также сказал, что вы также можете:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None)); 

Второй разрывается на основе пробелов и новых линий.
Первый, хотя, разделяет \r и \n индивидуально. поэтому Для правильного поведения вы хотите использовать второй метод.

+1

Это правильный вариант. EOL имеет особую платформу. – JensG

+0

Где я должен это поставить? –

+1

Если 'Environment.NewLine'' '\ r \ n" ", то разделение на массив будет разделено на' \ r' ** или ** '\ n', что означает, что вы получаете дополнительную пустую строку из каждой строки новой строки , Вы должны разделить на строки, чтобы обрабатывать это, а не на символы. – Guffa

2

Это зависит от того, где и как создается файл.

Если он был создан на той же системе, что, скорее всего, использовать нативный сочетание новой строки для этой конкретной системы, и вы можете использовать Environment.NewLine константу:

string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None); 

Обратите внимание, что Environment.NewLine является строкой, и может содержат более одного символа, поэтому вам нужно разделить строки, а для вызова нужен параметр StringSplitOptions, так как без него нет перегрузки.

Если файл поступает из другой системы (или был создан с символами новой строки, характерными для другой системы), вам необходимо указать эту конкретную строку. Например, строка два символа, используемая в системе Windows:

string[] split1 = radek1.Split(new string[] { " ", "\r\n" }, StringSplitOptions.None); 

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

string[] split1 = radek1.Split(new string[] { " ", "\r\n", "\n" }, StringSplitOptions.None);