我有一个看起来像这样的字符串:
"/dir/location/test-load-ABCD.p"
Run Code Online (Sandbox Code Playgroud)
我需要解析"ABCD"(ABCD每天都会有不同的价值)
我所知道的唯一一致的东西(用于解析逻辑)是:
我想到的东西以某种方式抓住了最后一个"/"之后的所有东西然后删除了最后2个字符(以".p"为例然后再做一个
.Replace("test-load-", "")
Run Code Online (Sandbox Code Playgroud)
但它感觉有点hacky所以我想看看人们是否对更优雅的解决方案有任何建议.
你可以使用正则表达式:
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)