从字符串中获取一些东西c#

时间:2015-09-16 17:10:15

标签: c#

所以我需要获取一个字符串的一部分,其中包含:name =

字符串如下所示: [Zone] ZoneChangeList.ProcessChanges() - id = 1 local = False [name = XXX id = 4 zone = PLAY zonePos = 0 cardId = HERO_01 player = 1] zone from - >友好的游戏(英雄)

XXX可以是任何长度,包括空格,除此之外的所有内容都应该替换为空。

任何想法??

问候!

3 个答案:

答案 0 :(得分:2)

如果您完全确定在id之后name会立即出现,您可以使用这样的RegEx模式:

\[name=(?<NameGroup>(.*))\s*id

当您进行匹配时,NameGroup将包含名称(在本例中为xxx)。然后,您可以使用此模式执行Regex.Replace()以将名称替换为其他名称。您可能需要根据需要使用模式,以确保它捕获所有极端情况。

答案 1 :(得分:1)

使用String.IndexOf查找“name =”标记的索引和“id =”标记的索引,然后查找这些索引之间的子串。您必须考虑标签的长度,但这应该不是问题,因为这些标签的长度是已知的

string s = "[Zone] ZoneChangeList.ProcessChanges() - id=1 local=False [name=XXX id=4 zone=PLAY zonePos=0 cardId=HERO_01 player=1] zone from -> FRIENDLY PLAY (Hero)"
int x = s.IndexOf("[name=") + "name=".Length;
int y = s.IndexOf(" id=");
s.Substring(x,y);

答案 2 :(得分:1)

    string tag = "[name=";
    string name = str.Split(' ').Single(x => string.Concat(x.Take(tag.Length)) == tag).Remove(0, tag.Length);

假设数据始终以空格分隔,获取以正确标记开头的元素(假设这是唯一的),然后修剪标记并返回名称数据。