Csharp/C#教程:C#等同于InStrRev分享


C#等同于InStrRev

我一直在寻找超过一个小时,我不能为我的生活弄清楚如何从右边开始搜索字符串变量。 我想要做的是获取路径的最后一个文件夹(在文件名之前),在VB6中我会做这样的事情:

Dim s As String s = "C:WindowsSystem32FooBar" Debug.Print Mid(s, InStrRev(Left(s, Len(s) - 1), "") + 1) 

这是我到目前为止所尝试的:

 string s = "C:\WindowsSystem32\Foo\Bar\"; s = agencyName.Substring(s.LastIndexOf("\") + 1) 

大概你想忽略字符串中的最后一个 ,因为你的VB代码正在搜索除最后一个字符之外的所有字符。 您的C#代码无法正常工作,因为它正在搜索整个字符串,找到作为字符串中的最后一个字符,导致您的子字符串不返回任何内容。 您必须告诉LastIndexOf从最后一个字符开始,就像在VB中一样。

我认为相当于你的VB代码将是:

 s = s.Substring(s.LastIndexOf("\", s.Length - 2) + 1) 

使用strToSearch.LastIndexOf(strToFind);

编辑:我看到你更新了你的问题,说你已经尝试过LastIndexOf() 。 这个方法有效,我已经多次使用过了。

你说你想得到文件名开始的位置。 但是,您的示例路径不包含文件名。 (因为它以结尾,表示它是一个目录名。)

正如其他地方所建议的,如果你真的不想要最后的 ,那么你需要指定起始索引,以告诉LastIndexOf()跳过你不想要的尾部反斜杠。

 var fullPath = @"C:foobarfile.txt"; var folderName = new FileInfo(fullPath).Directory.Name; //folderName will be "bar" 

编辑:澄清的例子

上述就是C#学习教程:C#等同于InStrRev分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/999641.html

(0)
上一篇 2021年12月26日
下一篇 2021年12月26日

精彩推荐