"blahblah\dummytext\_config.bat"
如果我想从这个字符串中获取_config.bat,那么最好的方法是什么?只有我能想到的方法是从.bat读回到它找到的第一个斜杠但我不知道该怎么做。
答案 0 :(得分:5)
您可以使用LastIndexOf方法找到最后一个反斜杠:
int index = myString.LastIndexOf( @"\" );
string result = myString.SubString( index + 1 );
丹尼尔有一个好主意。使用FileInfo将是一种更安全的方式,并且易于使用:
// myString doesn't need a full path either
System.IO.FileInfo fi = new System.IO.FileInfo( myString );
// returns just the file name without the path
string result = fi.Name;
代理-j的暗示:
string result = System.IO.Path.GetFileName( myString );
我不确定Path是否想要一条完整的路径。 FileInfo和Path都接受不存在的路径和文件名。
答案 1 :(得分:2)
'$'匹配一行的结尾。因此,此正则表达式将匹配行末尾不是反斜杠的一个或多个字符,即示例字符串中的“_config.bat”。
[^\\]+$
答案 2 :(得分:1)
如果您希望在最后一个反斜杠之后拥有所有内容,则可以使用以下正则表达式:
.*\\(.*)
捕获组将为您提供所需的结果。因为默认情况下第一个。*是贪婪的,它会尽可能多地匹配,因此也会消耗掉除最后一个之外的任何反斜杠(因为那样就不再有匹配了)。
答案 3 :(得分:1)
尝试RegexOptions.RightToLeft;有关详细信息,请访问以下链接:https://msdn.microsoft.com/en-us/library/yd1hzczs%28v=vs.110%29.aspx
答案 4 :(得分:0)
这是查看斜杠(?<=\\)
后面的正则表达方式:
string fileName = @"blah\blah\_config.bat";
Regex.Match(fileName, @"(?<=\\)[^\\]+$"));
但如果您正在谈论文件名,请使用
string relativePath = @"blah\blah\_config.bat";
string fileName = Path.GetFileName(relativePath);