2015-11-26 2 views
0

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

К сожалению, все имена пользователей в исходном текстовом файле находятся в неизвестных местах, но есть одна вещь, которая разделяет имя пользователя из информации о группе.

Все они имеют [пробел] в строке над ними и линии с "-------------------------- --- " под ними. Другая проблема, которая возникает, заключается в том, что некоторые имена пользователей имеют адреса электронной почты под ними, а некоторые нет. Таким образом, единственным надежным источником для проверки, является ли это имя пользователя или нет, будет [пробел] в строке над именем пользователя.

Поскольку это довольно большой файл, содержащий около 700 имен пользователей, запись их вручную вручную будет весьма неудобной и незначительной.

Пример входного файла (есть пустая строка в начале, но уценки не показывает):

User1 
----------------------------- 
Group1 
Group3 
Group4 


User2 
[email protected] 
----------------------------- 
Group2 


User3 
----------------------------- 
exampleGroup 
Potatoes 

Я действительно надеюсь, что вы можете мне помочь, так как я совсем новичок в кодировании.


EDIT

Как заявил О. Р. Mapper, это не "написать код для меня" распложен.

И я забыл включить свой код, что я пытался заставить его работать. К сожалению, это не сработало. Здесь

 string path = System.AppDomain.CurrentDomain.BaseDirectory; 
     path += "users.txt"; 
     string[] fileLines = File.ReadAllLines(path); 
     if (File.Exists(path)) 
     { 
      for (int zeileIndex = 0; zeileIndex < fileLines.Length; zeileIndex++) 
      { 
      string zeile = fileLines[zeileIndex]; 
      //zeile is simply a word for line in another language 
      if (zeile.Contains(" ")) 
      { 
       ++zeileIndex; 
       if (zeile.Contains(" ")) 
       { 
        ++zeileIndex; 
        listboxNames.Items.Add(zeile); 
       } 
      } 
      } 
     } 
+1

Вы попробовали что-нибудь? Вместо того, чтобы давать ссылку на полный файл, дайте короткий, но достаточный пример его содержимого. – Sinatr

+4

StackOverflow не является сервисом «напишите мой код для меня». ** Однако **, «начинающий к кодированию» подразумевает, что вы в какой-то момент должны быть не-новичком - больше для кодирования, и я думаю, что это хорошая возможность для вас немного продвинуться: вы уже достаточно четко изложили свои требования Что ж. По существу, то, что вы хотите сделать, определяет для каждой строки, является ли это имя пользователя или нет, и вы указали условия. Не могли бы вы попытаться написать код, который 1) загружает файл, 2) читает строки, например. в массив, 3) проверяет каждую строку на основании ваших условий, является ли это именем пользователя? –

+0

@Sinatr это не полный файл. Это пример, написанный в стиле, в котором генерируются исходные файлы. –

ответ

0

Вот эскиз одного из способов решения проблемы. Кстати, для начинающего программиста, как и я, я бы рекомендовал начать с языка высокого уровня, такого как Python, поскольку это позволяет сосредоточиться на концепциях программирования вместо таких вещей, как управление и указатели низкого уровня памяти.

Я не знаю C#, поэтому я не смотрел ваш код в каких-либо подробностях.

Входные данные выглядит следующим образом:

... other stuff ... 
[space] 
line with username 
optional line with email address 
------------ (some number of repeated hyphens) 
... other stuff ... 

В файле образца, [пробел], как представляется, означает пустую строку, так что я буду считать, что.

Я буду предполагать, что [пространство] всегда приходит до строки имени пользователя и никогда раньше ничего. Я также предполагаю, что первая строка файла никогда не является строкой имени пользователя.

Итак, по существу, мы хотим пройти через линии, отслеживая, когда предыдущая строка была пуста. В псевдокоде:

prev_empty = false 
while (readline(line)): 
    if line is empty: 
     prev_empty = true 
    else: 
     if prev_empty: 
      username = extract_uname(line) 
      output(username) 
      prev_empty = false 

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

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