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

本文关键字:获取 字符串 | 更新日期: 2023-09-27 18:12:58

所以我需要得到字符串的一部分,它包含:name=

字符串看起来像这样:[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)

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

有什么想法?

问候!

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

如果您绝对确定id紧接在name之后,您可以使用像这样的RegEx模式:

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

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

使用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);
    string tag = "[name=";
    string name = str.Split(' ').Single(x => string.Concat(x.Take(tag.Length)) == tag).Remove(0, tag.Length);

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