从字符串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可以是任意长度,包括空格,除此之外的所有内容都应该用空替换。
有什么想法?
问候!
如果您绝对确定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);
假设数据总是以空格分隔,获取以正确标记开头的元素(假设这是唯一的),然后裁剪标记并返回名称数据