我一直在搜索超过一个小时,我不能为我的生活弄清楚如何从右边开始搜索字符串变量.我想要做的是获取路径的最后一个文件夹(在文件名之前),在VB6中我会做这样的事情:
Dim s As String
s = "C:\Windows\System32\Foo\Bar\"
Debug.Print Mid(s, InStrRev(Left(s, Len(s) - 1), "\") + 1)
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止尝试的内容:
string s = "C:\\Windows\System32\\Foo\\Bar\\";
s = agencyName.Substring(s.LastIndexOf("\\") + 1)
Run Code Online (Sandbox Code Playgroud)
使用strToSearch.LastIndexOf(strToFind);
.
编辑:我看到你更新了你的问题,说你已经尝试过LastIndexOf()
.这种方法有效,我已多次使用它.
你说你想得到文件名开始的位置.但是,您的示例路径不包含文件名.(因为它结束\
,表示它是一个目录名.)
正如其他地方所建议的那样,如果你真的不想要最后一个\
,那么你需要指定起始索引以告诉LastIndexOf()
你跳过你不想要的尾部反斜杠.
大概你想忽略\
字符串中的最后一个,因为你的VB代码正在搜索除最后一个字符之外的所有字符.您的C#代码无法正常工作,因为它正在搜索整个字符串,找到字符串\
中的最后一个字符,导致您的子字符串不返回任何内容.你必须告诉你LastIndexOf
在最后一个角色之前开始角色,就像在VB中一样.
我认为相当于你的VB代码将是:
s = s.Substring(s.LastIndexOf("\\", s.Length - 2) + 1)
Run Code Online (Sandbox Code Playgroud)