LRazvan96 Ответов: 3

Как написать код на C# для чтения некоторых слов из файла


Привет,
Я должен написать последовательность в C#. Dat приходится читать из файла (не имеет значения, что это за файл), просто слова между некоторыми ... слова.
Например: "идентификатор конфигурации: 1423AAA конец конфига
ID Config: 242gggg end config"
---------
И я должен получить только dat "1423AAA", из каждой строки.

Результаты должны быть помещены в одну строку (я думаю, что это длинная строка).

Пожалуйста, помогите мне :(

Sry для моего английского.

Что я уже пробовал:

Начните с StreamReader sr = new StreamReader(file);
....

и я не могу найти это условие :(

3 Ответов

Рейтинг:
17

OriginalGriff

Это действительно зависит от того, насколько последовательны данные и повторяются ли они.
Если ваши данные всегда имеют форму

... ID Config: nnnnaaa end config ...
Тогда я бы использовал регулярное выражение:
(?<=ID Config:\s+)\w+(?=\s)
Будут делать это:
private static Regex findID= new Regex(
      "(?<=ID Config:\\s+)\\w+(?=\\s)",
    RegexOptions.Multiline
    | RegexOptions.CultureInvariant
    | RegexOptions.Compiled
    );
...
    MatchCollection ms = findID.Matches(InputText);
    foreach (Match m in ms)
        {
        Console.WriteLine(m.Value);
        }


LRazvan96

В документе dat будет больше данных. Нравится...

-блабал
балба бла Ба не важно
ID COnfig: 1243FS end config;
опять слова..
и еще раз
ID Config: 1241gf end config;
.. "

OriginalGriff

Вот почему мой образец "формы" имел эллипсы ...

Попробуйте код регулярного выражения и посмотрите, что получится!

LRazvan96

Sry, но я не могу понять без формы :( теперь я смущен , потому что никогда раньше не использовал regex sintax.

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

OriginalGriff

Да ладно тебе!
Вы знаете, как читать весь текст из файла, да?

LRazvan96

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

Если это может помочь...
static void Main(string[] args)
{
StreamReader fin = новый StreamReader("D:\\path-да..);
строки = "";
в то время как ((строка = фин.С readline()) != нуль)
{
// а вот этого я не знаю
}

OriginalGriff

Просто используйте ReadAllText - это возвращает весь файл в виде одной строки. Затем введите это в код, который я вам дал, и посмотрите, что произойдет.

Честно говоря, это элементарная вещь - если вы не можете справиться с чтением файла полудюжиной различных способов, то вы выходите из своей глубины!

LRazvan96

Хорошо, спасибо.
Ты действительно помог мне.
Теперь.. dat-это правильное решение для моего кода:
текст строки = System.IO.File.ReadAllText(файл);
Шаблон регулярного выражения = новое регулярное выражение("(?&ЛТ;=/пуск).*?(Конец)", Поиск.Справа налево);
MatchCollection allMatches = pattern.Спички(текст);

по каждому элементу (ВАР м в allmatches командлета)
{
Приставка.WriteLine(m);
}

LRazvan96

Ладно, извините за это, но у меня есть еще один вопрос.
Как мне поместить нашу букву "М" (из allMatches) в строку?
Я не могу найти, что это за объект allMatches.

OriginalGriff

Подсказка находится в коде:

MatchCollection allMatches = pattern.Matches(text);


Что делает его коллекцией совпадений:
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.matchcollection?redirectedfrom=MSDN&view=netframework-4.7.2

А m.Value-это та строка, которая вам нужна, как я показал в исходном коде...

LRazvan96

Sry за этот вопрос, но мне действительно нужна ваша помощь :(
Что такое синтаксис для регулярных выражений:
(пробел)(пробел) UWORD (пробелы)(пробелы) /* тип данных */
(пробел)(пробел) УБЙТЕ (мест)(мест) /* тип данных */

Мне нужно получить UWORD и UBYTE и многое другое без пробелов и типа данных /* */

Или где я могу найти что-то, что поможет мне в этих командах.
Большое спасибо.

Рейтинг:
1

Dirk Bahle

Если вы новичок и уже запутались, просто используя такой инструмент, как regex, вы можете рассмотреть альтернативные форматы, такие как XML. Поиск статей по XmlSerializer или DataContractSerializer

- его действительно легко читать и писать в формате Xml .Чистая, если вы потратите время на оценку этого варианта ...


Рейтинг:
0

Dirk Bahle

Вы действительно должны быть в состоянии найти ответ в Интернете, например,:

c# - чтение текстового файла слово за словом - переполнение стека[^]


LRazvan96

Но номера dat будут меняться каждый раз в файле.