从较长的字符串中解析字符串的最佳方法是什么?

leo*_*ora 0 c# string parsing

我有一个看起来像这样的字符串:

"/dir/location/test-load-ABCD.p"
Run Code Online (Sandbox Code Playgroud)

我需要解析"ABCD"(ABCD每天都会有不同的价值)

我所知道的唯一一致的东西(用于解析逻辑)是:

  1. 值后面总会有一个".p"
  2. 在值之前总是会有"test-load-".

我想到的东西以某种方式抓住了最后一个"/"之后的所有东西然后删除了最后2个字符(以".p"为例然后再做一个

 .Replace("test-load-", "")
Run Code Online (Sandbox Code Playgroud)

但它感觉有点hacky所以我想看看人们是否对更优雅的解决方案有任何建议.

SLa*_*aks 7

你可以使用正则表达式:

static readonly Regex parser = new Regex(@"/test-load-(.+)\.p");

string part = parser.Match(str).Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)

为了增加弹性,请替换.+为仅包含可能出现在该部分中的字符的字符类.

额外奖励:
你可能接下来想要的

DateTime date = DateTime.ParseExact(part, "yyyy-MM-dd", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)