这可能是一个非常简单的问题,但我似乎无法弄明白。你知道如何在' /'之后提取部分。在一个字符串中。所以对于以下内容:
[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]
所以我只想要' OrderConfirmation_SynergyWorldInc'一部分。我得到了271个条目,我只需要提取结尾部分(如果有帮助的话,所有部分之前都有部分)。
谢谢!
答案 0 :(得分:4)
在进行一些修剪后,您需要将LastIndexOf
与Substring
一起使用:
var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";
s = s.Trim('[',']');
Console.Write(s.Substring(s.LastIndexOf('\\') + 1));
结果:OrderConfirmation_SynergyWorldInc
您可以使用正则表达式从包含[...]
子字符串的大型文本中提取多个匹配项:
[^\\\[\]]+(?=\])
请参阅demo
对于[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc][SOMEENTRY]
字符串,您将获得2个结果:
正则表达式匹配
[^\\\[\]]+
- 除]
,[
和\
(?=\])
- 在结束]
字符之前。C#:
var results = Regex.Matches(s, @"[^\\\[\]]+(?=\])").OfType<Match>().Select(p => p.Value).ToList();
答案 1 :(得分:0)
尝试:
string orderConfirmation = yourString.Split(new []{'\\\'}).Last();
如果括号包含在字符串中,您可能还想删除最后一个字符。
答案 2 :(得分:0)
var s = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";
Console.WriteLine (s.Trim(']').Split('\\').Last());
打印
OrderConfirmation_SynergyWorldInc
答案 3 :(得分:0)
var key = @"[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]";
key = key.Replace("[", string.Empty);
key = key.Replace("]", string.Empty);
var splitkeys =key.Split('\\');
if (splitkeys.Any())
{
string result = splitkeys.Last();
}
答案 4 :(得分:-3)
string pattern = ".*\\(\w*)";
string value = "[HKEY_LOCAL_MACHINE\SOFTWARE\4YourSoul\Server\ReportEMailService\OrderConfirmation_SynergyWorldInc]"
Regex r = new Regex(pattern);
Match m = r.Match(value);