2014-01-17 3 views
0

У меня есть текстовый файл и содержит текст ниже:получение текста из текстового файла в массив

Contact Name  |  Contact Number 

Muhammad Hassan Ali Khan|  123456 
Danish Abdul Ghani  |  165484 
Adeel Siddiqui   |  865697 
Muhammad Faisal Bilal |  569745 
Arslan     |  145236 

и я хочу Dispaly его, как это в GridView и я использую следующий код: для проверки что я прав, работая для получения текста из файла.

protected void Page_Load(object sender, EventArgs e) 
     { 
      string line = ""; 
      StreamReader reader = new StreamReader("c:\\Contacts.txt"); 
      while ((line = reader.ReadLine()) != null) 
      { 
       string[] arr = line.Split('\t\t|\t\t'); 
      } 
     } 

Но в этой строке "строка [] обр = line.Split ('\ т \ т | \ т \ т');" ошибка:

Error: Too many characters in character literal 

Как удалить эту ошибку. Пожалуйста, предложите мне. ожидая ответа. Thanks

+0

Апостроф в 'Split ('') указывает тип' Char', который может содержать только один символ. –

ответ

1

попробуйте это;

string[] arr = line.Split(new string[] { "\t\t|\t\t" }, StringSplitOptions.RemoveEmptyEntries); 

Edit: ' инкапсулирует характер, " для строк.

+0

ojlovecd: ваша строка кода работает, но она получает только первую строку. Контактное имя | Контактный номер, и я хочу получить все выше текст, – hasshankhan

0

Если вам нужно разделить на несколько символов, используйте Regex:

line.Split(value, "'\t\t|\t\t'"); 
3

Вы можете сделать это

string line = ""; 
StreamReader reader = new StreamReader("c:\\Contacts.txt"); 
while ((line = reader.ReadLine()) != null) 
{ 
     string[] arr = line.Split('|'); 
     arr = arr.Select(x => x.Trim()).ToArray(); 
} 
+1

Это единственный ответ, который действительно будет работать должным образом, поскольку исходное решение \ t \ t | \ t \ t неверно в любом случае на основе предоставленных исходных данных. – Ashigore

1

Вы должны передать массив символов метода String.Split(). Символы из массива будут использоваться в качестве разделителей для разделения.

Как метод Split() имеет ключевое слово params в своей сигнатуре, вы можете опустить прямое создание массива и просто передать символы, разделенные запятой.

Примеры:

string[] arr = line.Split('|'); 
string[] another = line.Split('|','-',':','!'); 

Это стоит отметить, что один из перегруженных версий Split() принимает StringSplitOptions перечисление.

Я бы порекомендовал вас использовать его с опцией StringSplitOption.RemoveEmptyEntries. Это предотвратит появление пустых элементов в массиве результатов. Однако эта версия метода не содержит ключевого слова params, поэтому вам нужно создать массив.

var arr = mystring.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); 
+0

Объясните, почему это работает. –

+0

Поскольку метод String.Split() фактически имеет подпись с ключевым словом 'params', например. String.Split (params char [] separator). Таким образом, вы можете опустить создание массива или даже назвать его как mystring.Split ('-', ':', '|'); – Ronnix

+0

Пожалуйста, правильно отредактируйте его в ответе. –

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