Рейтинг:
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 и многое другое без пробелов и типа данных /* */
Или где я могу найти что-то, что поможет мне в этих командах.
Большое спасибо.