解析此文本的其他方法?使用尽可能少的代码

时间:2014-05-15 21:41:56

标签: c# parsing

我有这个文本,我想解析得到这些人的名字。 什么是最简单的解析方法?是否有一些工具/语言或C#语言的扩展允许我捕获这种结构?

我知道我可以在C#中使用一些Split,但我希望以另一种方式听取专家的意见,这样做更有活力和流畅。

如果可能,结果可以是一个类,具有国家列表,功能列表,名称列表,可能是结构化动态/扩展对象。

 Country,
     Goleiros 
         [list of names]
     Defensores
         [list of names]
  

巴西

     

Goleiros:JulioCésar(多伦多FC-CAN),Jefferson(Botafogo-BRA)e   Victor(AtléticoMineiro-BRA)

     

Defensores:Thiago Silva(巴黎圣日耳曼-FRA),David Luiz   (Chelsea-ING),Dante(Bayern de Munique-ALE),Henrique(Napoli-ITA),   丹尼尔阿尔维斯(巴塞罗那 - ESP),麦孔(罗马 - ITA),马塞洛(真实   马德里 - ESP)e Maxwell(巴黎圣日耳曼-FRA)

     

Meio-campistas:Luiz Gustavo(Wolfsburg-ALE),Paulinho   (托特纳姆-ING),拉米雷斯(切尔西-ING),费尔南迪尼奥(曼彻斯特   City-ING),Hernanes(InterdeMilão-ITA),Oscar(Chelsea-ING)e   威廉(切尔西-ING)

     

Atacantes:Hulk(Zenit-RUS),Bernard(Shakhtar Donetsk-UCR),Fred   (Fluminense-BRA),Jô(AtléticoMineiro-BRA)e Neymar(巴塞罗那-ESP)

     

Técnico:Luiz Felipe Scolari(BRA)

     

Croácia

     

Goleiros:Stipe Pletikosa(Rostov-RUS),Danijel Subasic(摩纳哥-FRA)e   Oliver Zelenika(Lokomotiv Zagreb-CRO)

     

Defensores:Darijo Srna(Shakhtar Donetsk-UCR),Domagoj Vida(Dínamo)   de Kiev-UCR),Sime Vrsaljko(Genoa-ITA),Ivan Strinic(第聂伯罗-UCR),   Danijel Pranjic(Panathinaikos-GRE),Vedran Corluka(火车头   Moscou-RUS),Dejan Lovren(Southampton-ING),Gordon Schindelfeld   (Panathinaikos-GRE)e Igor Bubnjic(乌迪内斯-ITA)

     

Meio-campistas:Luka Modric(皇家马德里 - ESP),Ivan Rakitic   (Sevilla-ESP),Mateo Kovacic(InterdeMilão-ITA),Niko Kranjcar   Queens Park Rangers-ING),Marcelo Brozovic(DínamoZagreb-CRO),Ognjen   Vukojevic(DínamodeKiev-UCR),米兰巴德利(Hamburgo-ALE),伊万   Mocinic(Rijeka-CRO),Mario Pasalic(Hajduk Split-CRO)和Sammir   (赫塔菲-ESP)

     

Atacantes:Mario Mandzukic(Bayern de Munique-ALE),Nikica Jelavic   (赫尔城-ING),Ivica Olic(沃尔夫斯堡-ALE),Eduardo da Silva   (Shakhtar Donetsk-UCR),Duje Cop(DínamoZagreb-CRO),Ivo Ilicevic   (Hamburgo-ALE),Ivan Perisic(Wolfsburg-ALE)和Ante Rebic   (佛罗伦萨-ITA)

     

Técnico:Niko Kovac(CRO)

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。

在以下之后选择所有内容:或,之前(

更新

C#库为您提供了匹配字符串的方法。我想你想要使用这个方法Match

它将返回一个字符串列表,你可以迭代它,或者使用string.join将它们全部压缩成一行。

答案 1 :(得分:1)

如果您定义测试结构的规则将有所帮助。所以:

定义您的数据结构 - 看起来它可以基于以下内容,其中类玩家由位置组成。球员姓名,俱乐部名称

public class myFootballData
{
    public string CountryName
    public List<Players>
}
  • 逐行处理数据,迭代数据文件或字符串。如果是字符串,则将其拆分为换行符中的数组。
  • 如果某行为空,则忽略
  • 如果某行没有冒号或括号,则会启动一个带有国家/地区名称的新myFootBall对象
  • 拆分以下非国家/地区行:然后{以提供职位,姓名和分会

这是指向解决方案的指针,而不是完全可行的解决方案。仍然需要您的输入才能完成。

答案 2 :(得分:1)

你可以尝试一个正则表达式,它使用像...这样的惰性量词来捕获冒号/逗号和括号之间的文本。

[:|,](.*?)[(].*?[)]

这应该让你开始。