Страница: 1 | 2 | 
		
		 
			   
			 
			 
			 
			 
			
 
  
		
     
  
    
Вопрос: String.Split -метод  
     
    
Добавлено: 21.08.06 22:47
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Sergey
 Sergey
      
       
  
Читаю из текстового файла и получаю массив строк:
 
    
        Dim ged As String() = rd.ReadToEnd().Split(vbNewLine)
        rd.Close()
Почему-то в начале каждой строки остается Chr(10) или Chr(13)
Что неверно?
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 20
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Павел
 Павел






Администратор
ICQ: 326066673 
Вопросов: 368
Ответов: 5968
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  22.08.06 04:27
       
    
       
  
Разбивай по vbCrLf...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #2
       
Добавлено:  22.08.06 07:00
       
    
       
  
Увы, ничего не меняет...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #3
       
Добавлено:  22.08.06 13:17
       
    
       
  
Только так удается получить нужный результат:
 
    
 .Split(vbNewLine)
.Split(vbNewLine)
Но это сильно влияет на время выполнения парсинга для больших файлов  
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #4
       
Добавлено:  22.08.06 13:37
       
    
       
  
Можно регулярными выражениями резать...
 
    
У тебя проблема в том, что в файле нестандартные переносы строк, судя по всему.
Нужно точно выяснить, какие они и по этим переносам резать, если они все время меняются, то резать регулярным выражением.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #5
       
Добавлено:  22.08.06 15:14
       
    
       
  
 
    
Нестандартные - это строки разной длины?
Так они в текстовых файлах всегда разные...
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #6
       
Добавлено:  23.08.06 04:47
       
    
       
  
нестандартные символы переноса строк
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #7
       
Добавлено:  23.08.06 06:59
       
    
       
  
 
    
Это какие, можно подробнее?
У меня последовательно Chr(13) и Chr(10).
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #8
       
Добавлено:  23.08.06 07:38
       
    
       
  
Если везде chr(13) и chr(10) то режь по Chr(13) + Chr(10), если где-то остаются левые символы, значит где-то нестандартные переносы строк, нужно резать регулярными выражениями, что еще непонятного?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #9
       
Добавлено:  23.08.06 10:05
       
    
       
  
Brand, ну зачем нервничать?  
     
ВЕЗДЕ строки заканчиваются chr(13) и chr(10). Нестандартные переносы строк отсутствуют. Кодировка ANSI. Попробуйте сделать у себя без регулярного выражения. Интересен результат.
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #10
       
Добавлено:  23.08.06 13:57
       
    
       
  
 
    
Я еще не начал нервничать.
У меня есть пароль от базы данных, когда я начну нервничать, ты первый это увидишь  
Если у тебя ВЕЗДЕ строки заканчиваются chr(10) и chr(13) то нигде лишних символов показывать не будет.
Как я попробую у себя что-то? Текст твоего файла и код над которым ты работаешь, мне еще не приснился  
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #11
       
Добавлено:  23.08.06 15:29
       
    
       
  
 
    
У меня последовательность chr(13) и chr(10).
Если не трудно, можно использовать любой имеющийся у вас текстовый файл. Я пробовал на множестве разных файлов. Результат один.
		
	  
			 
	
		 
    
       
    
Номер ответа: 12 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #12
       
Добавлено:  23.08.06 16:06
       
    
       
  
А регулярное выражение работает без ошибок:
 
    
        Dim ged As String() = instance.Split(rd.ReadToEnd())
		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа: Павел
 Павел






Администратор
ICQ: 326066673 
Вопросов: 368
Ответов: 5968
      
 Web-сайт:  
 Профиль |  | #13
      
Добавлено:  23.08.06 16:52
       
    
       
  
 
    
Так будет резать по любому разделителю, юудь то CrLf, Cr, Lf или даже
LfCr.
Я вообще String.Split недолюбливаю именно за сложность разбиения по
строкам (ибо он заточен под разбиение по символам)... Обычно вместо
него юзаю старый Split:
Dim strs As String() = Split(text, ControlChars.CrLf)
Хотел еще вчера написать, но лень было открыть MSDN и перепроверить
это...
		
	  
			 
	
		 
    
       
    
Номер ответа: 14 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #14
      
Добавлено:  23.08.06 20:11
       
    
       
  
 
     
 
Жжош аццки  
		
	  
			 
	
		 
    
       
    
Номер ответа: 15 
      
Автор ответа: Sergey
 Sergey






Вопросов: 15
Ответов: 55
      
 Профиль |  | #15
       
Добавлено:  23.08.06 21:50
       
    
       
  
 
    
Добавляет пустые строки после каждой строки.
 
А вот это делает все быстро и как положено  
Павел, спасибо, навел на решение!
Brand, спасибо за внимание!