У меня есть ~ 7Mb текстовый файл, который нужно извлечь некоторую информацию и содержит много примеров подобного формата в:Получение определенной информации из текстового файла
"name": "Riki's Dagger",
"defindex": 0,
"item_class": "dota_item_wearable",
"item_type_name": "#DOTA_WearableType_Daggers",
"item_name": "#DOTA_Item_Rikis_Dagger",
"proper_name": false,
"item_quality": 0,
"image_inventory": null,
"min_ilevel": 1,
"max_ilevel": 1,
"image_url": "",
"image_url_large": "",
Я хочу, чтобы извлечь имя и defindex, убедитесь, что этот экземпляр имеет/не содержит некоторых ключевых слов, а затем помещает его в новый текстовый файл, чтобы потом использовать его. Мой план состоял в том, чтобы искать файл для каждого экземпляра «name» (с кавычками) и устанавливать все содержимое перед следующим экземпляром «name» для переменной с именем current. Затем оттуда найдите текущую строку для необходимой мне информации. Это лучший способ сделать это и как я буду заниматься этим? Должен ли я использовать Regex или слишком большой файл? Некоторое направление будет высоко оценено.
Это то, что я до сих пор:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
namespace ConsoleApplication1
{
class Test
{
static void Main(string[] args)
{
string ingameschemaFilePath = @"C:\Users\Andrew\Documents\GitHub\SteamBot\Bin\Debug\ingameschema.txt";
string dota2schemaFilePath = @"C:\Users\Andrew\Documents\GitHub\SteamBot\Bin\Debug\dota2schema.txt";
string schemaFilePath = @"C:\Users\Andrew\Documents\GitHub\SteamBot\Bin\Debug\schema.txt";
string[] ingameschema = File.ReadAllLines(ingameschemaFilePath);
string[] dota2schema = File.ReadAllLines(dota2schemaFilePath);
string[] current = null;
string[] name = null;
string[] defindex = null;
string[] rarity = null;
using (TextWriter textWriter = new StreamWriter(schemaFilePath))
{
foreach (//search for "name"->"name" segment here)
{
// if current.Contains("dota_item_wearable") == false, current.Contains("announcer", "courier", "ward", "egg", "costume", "HUD", "smeevil", "taunt", "bait", "lure", "bundle") == true,
// break
}
}
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}
Как вы думаете, вы могли бы показать нам начало и конец этого файла? У меня такое чувство, что это JSON, и в этом случае у вас может быть гораздо лучший вариант, чем Regex. – Katana314
Он немного похож на JSON, но без брекетов {}. Является ли входной файл действительным JSON, или это просто длинный список без разделения для каждого элемента элемента? Если это JSON, есть несколько отличных библиотек, которые будут анализировать файл в аккуратные объекты для вас. Я сам поклонник JSON.NET, но есть и другие хорошие. – McMuttons
Start: "результат" { \t: { \t \t "Статус": 1, \t \t "items_game_url": «HTTP: \/\/media.steampowered.com \/Apps \/570 \/скрипты \ /items\/items_game.***************..txt», \t \t "качества": { \t \t \t "нормальный": 0, \t \t \t "подлинной": 1, \t \t \t "винтаж": 2, \t \t \t "необычный": 3 , \t \t \t "уникальный": 4, \t \t \t "сообщество": 5, \t \t \t "разработчик": 6, \t \t \t "самодельных": 7, \t \t \t "настроить": 8, \t \t \t "странно": 9, \t \t \t "завершено": 10, \t \t \t "привидениями": 11, \t \t \t "турнир": 12, \t \t \t "благоприятствования": 13 – user2688799