Pergunta
Estou construindo um jogo em Visual Studio 2008 e para os níveis de construir, eu vou ter dois tipos de arquivos (mais do que isso, na verdade, mas esses dois são os únicos importantes para a minha pergunta) eu preciso analisar. Um vai ditar o conteúdo de um nível e será algo parecido com isto:
LevelName = "Amostra Nível"
Object1Type = "CustomObject"
Object1File = "WideFloor_DF"
Object1Position = 600600
Object2Type = "Circle"
Object2Position = 550, 500
Object2Mass = 5
etc.
O outro vai ditar as propriedades para objetos personalizados, e algo parecido com isto:
Name = "Wide Floor"
Mass = 1
GeometryMap = "WideFloor_GM"
IsStatic = true
etc.
Eu não estou muito familiarizado com expressões regulares (leia-se: eu não gosto deles porque o olhar muito parecido com o ruído na linha para compreender facilmente) e eu queria saber se existe um método mais fácil do que usar toneladas de expressões regulares ? p>
edit: Sabia que tinha esquecido alguma coisa! Eu realmente odeio arquivos xml, então eu realmente prefiro não usá-los (waaaaaaaay muito detalhado para mim). Editar 2:. Eu gosto do formato que eu vim acima com e prefere não mudar
Solução
Que tal usar arquivos XML? Você pode ler e escrever-los facilmente usando XMLReader e XMLWriter objetos, e você não terá que lidar com Regex em tudo.
<Level name="Sample Level">
<Object type="CustomObject" file="WideFloor_DF" positionX="600" positionY="600" />
<Object type="Circle" file="WideFloor_DF" positionX="500" positionY="500" mass="5" />
</Level>
Outras dicas
Se você estiver indo para ter seus arquivos em formato legível de qualquer maneira, por que não usar XML?
Se você tem controle sobre o formato de arquivo que você pode tentar algo com um analisador existente, como arquivos XML ou INI, sendo que ambos têm analisadores em .NET.
Se você está vendido no formato acima, você pode usar uma ferramenta como Lex para gerar o seu analisador para você.
Uma abordagem alternativa poderia ser a de definir uma classe que tem propriedades / coleções para armazenar todos esses dados de configuração, e torná-lo [Serializable]. Você pode, em seguida, preencher a uma configuração de exemplo, serializar-lo para um arquivo, e então você tem um arquivo de configuração XML completo que você pode editar manualmente. Quando estiver pronto para usar a configuração, apenas desserializar parte de trás arquivo XML para o objeto de configuração em seu aplicativo.
Se você absolutamente insistem em usar esse formato de arquivo, você pode construir um objeto que lê o arquivo linha por linha, puxando coisas do lado esquerdo do '=' e colocá-lo em um dicionário como a chave e tudo o direita do '=' como o valor.
No entanto, devo eco das respostas acima que dizem usar um documento XML, juntamente com um objeto XMLDocument. Você já olhou para LINQ para XML?
Bem, se eu entendi sua pergunta você quer uma forma de estruturar o conteúdo dos arquivos para que a análise será muito mais fácil para você, XML é uma boa escolha para isso, e XSD também para descrever o conteúdo do seu xml arquivos, LINQ to XML irá torná-lo muito bom para lê-lo de C #.
Se você usar XML pode deserialise os arquivos diretamente em um objeto de modo que você não precisa analisá-lo em tudo.
Por que não binário serialize seus objetos.