繁体   English   中英

删除带有混合符号的字符串部分

[英]Removing sections of a string with mixed symbols

我正在为已请求它的游戏服务器开发一个kill feed类型程序。

除了最简单的清理以下字符串的方法外,大部分内容都非常简单:

name1[1234567/12345678901234567] was killed by name2[12345/12345678901234567]

值得注意的事情:

  • 我需要两个独立的字符串。
  • 1将是第一个“/”后的17位数字,第二个是第二个“/”后的17位数字
  • name1或name2可能包含“/”,这就是为什么我不能只使用Index和之后的17位数。
  • name1或name2也可能包含一个“[CLAN]”,它也将抛出第一个“[”的索引。
  • “/”后面的17位数字始终为17位,但是,它在括号内的数字长度会有所不同。

任何帮助指出我正确的方向将非常感谢!

你可以使用这样的正则表达式:

(?<name1>.*)\\[(.*\\/)?(?<val1>.*)\\] was killed by (?<name2>.*)\\[(.*\\/)?(?<val2>.*)\\]

请参阅regex101

成功时, Regex.Match将返回2组: val1val2 ,其中包含值。

示例代码

var pattern = @"(?<name1>.*)\[(.*\/)?(?<val1>.*)\] was killed by (?<name2>.*)\[(.*\/)?(?<val2>.*)\]";
var input = @"name1[1234567/12345678901234567] was killed by name2[12345/12345678901234567]";
var match = Regex.Match(input, pattern);
if (match.Success)
    Console.WriteLine("1st value = {0}, 2nd value = {1}", match.Groups["val1"], match.Groups["val2"]);

产量

第一个值= 12345678901234567,第二个值= 12345678901234567

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM