CaseBody Ответов: 2

Получение определенных данных в текстовом файле (visual basic .NET)


Привет! У меня была эта проблема, и я просто не могу найти способ сделать это. Надеюсь, ты сможешь помочь.

Итак, допустим, у вас есть текстовый файл под названием:

"Games.txt"
Служебный долг: 50
Кредо Ассасинов: 23
Сторожевые Псы: 140

Мой вопрос в том, что если бы я хотел узнать количество "Assasins Creed", как бы я это сделал?

я надеюсь, что кто-то на форуме знает, как это сделать, Спасибо за вашу помощь заранее.

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

Я пытался найти его, зная линию, длину строки. Затем прочтите это и удалите первые 15 символов (
"Assasins Creed:"
) Это оставило бы меня с: 23. Но это довольно плохой способ сделать это, и я всегда должен знать точную линию. Лучшим решением было бы

M4rLask

Попробуйте использовать XML-файл, поэтому просто прочитайте значение игрового узла

ZurdoDev

Вы можете использовать функцию Split on String и split on the ":" и получить вторую.
String someNumber = strLineInFile.Split(':')[1].Trim(); // более или менее.

2 Ответов

Рейтинг:
2

OriginalGriff

Это не сложно, есть несколько способов сделать это.
Вы можете прочитать файл в виде серии строк и найти строку, начинающуюся с "Assassins Creed:" (строка.Стартсвит вам это скажет). Остальная часть линии-это ваш номер.

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

private static Regex findIt = new Regex(
      "(?<=Assasins Creed:\\s+)\\d+",
    RegexOptions.Multiline
    | RegexOptions.CultureInvariant
    | RegexOptions.Compiled
    );
...
    Match m = findIt.Match(textFromTheFile);
    if (m.Success)
        { 
        string theValueYouWanted = m.Value;
        ...
        }
Wither way, как только у вас есть данные, вы можете использовать int.TryParse, чтобы преобразовать его в число:
int assassinsCreedCount;
if (int.TryParse(theValueYouWanted, out assassinsCreedCount))
   {
   // You got it.
   ...
   }


CaseBody

Привет, спасибо за ваш ответ!
Я попытался добавить его в свой код, но все, что я получил, - это куча ошибок. Есть ли что-нибудь, что мне нужно импортировать?

Корпус

OriginalGriff

О. Вы не используете C# ...
Попробовать это:
Частная общая найти как регулярное выражение = новое регулярное выражение("(?&ЛТ;=Ассасинс крид: и\S+)\г+", Поиск.Или Многострочный Поиск.CultureInvariant Или RegexOptions.Составленный)
А это:
Dim m As Match = findIt.Матч(textFromTheFile)

Если м. Успех,то
Dim theValueYouWanted As String = m.Value
...
Конец, Если
И
Dim theValueYouWanted As String = "hhh"
Dim assassinsCreedCount как целое число

Если int32.Метод tryparse(theValueYouWanted, assassinsCreedCount) Затем
...
Конец, Если

CaseBody

Привет, спасибо за быстрый ответ! К сожалению, все еще много ошибок, Если вы хотите, чтобы я отправил скриншот ошибок или что-то еще, дайте мне знать

OriginalGriff

Никогда не делайте скриншотов ошибок. Посмотрите на них, подумайте о том, что именно он говорит, дважды щелкните на первом и посмотрите, почему он говорит то, что говорит.

Вы никогда ничего не добьетесь, не сделав этого!
Это почти наверняка, что вы просто пошли "копировать" и "вставить", не делая "думать" в середине. :смеяться:

CaseBody

Эй, ты совершенно прав насчет копирования-вставки.
Но в основном все это ошибка так что я действительно не знаю с чего начать

OriginalGriff

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

Код из интернета - это не то же самое, что заливать топливо в свой автомобиль: интернет-это насос, да, но то, что выходит из сопла, - это топливо для Mercedes A класса 2018 года, а у вас есть BMW 6 серии. Попробуйте использовать его, и ваш BMW перестанет работать.

Вместо этого посмотрите на примеры, которые я вам дал, и подумайте о коде. Попытайтесь понять, что он делает, и как он работает - это должно быть довольно очевидно, что вам нужно сделать с ним, это не сложный материал.
Начните с первого: куда это должно идти?

Рейтинг:
0

MadMyche

Этот псевдокод, возможно, потребуется скорректировать синтаксис
1. Откройте файл в streamreader
2. В цикле построчно
3. проверьте значение и дисплей

Dim FILE_NAME As String = "C:\Users\Owner\Documents\Games.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
  Dim objReader As New System.IO.StreamReader(FILE_NAME)

  Dim TextLine As String
  Dim LineArray() As String
  Dim LineKey As String
  Dim LineValue As String

  Do While objReader.Peek() <> -1
    TextLine = objReader.ReadLine()
    LineArray = TextLine.Split(':')
    LineKey = LineArray(0)
    LineValue = LineArray(1)
    ' if LineKey = "Assasins Creed" then LineValue will equal the desired amount
  Loop
End