让所有的字符在最后一个短划线的右侧

我有以下几点:

string test = "9586-202-10072" 

我将如何获得最后的所有字符-如10072.字符的数量总是不同于最后一个破折号的右边。

如何才能做到这一点?

你可以得到最后的位置-str.LastIndexOf('-') 。 所以下一步是显而易见的:

 var result = str.Substring(str.LastIndexOf('-') + 1); 

更正

正如下面的Brian所述,在没有破折号的string上使用它将导致返回相同的string。

你可以使用LINQ,并保存自己的显式parsing:

 string test = "9586-202-10072"; string lastFragment = test.Split('-').Last(); Console.WriteLine(lastFragment); 
 string tail = test.Substring(test.LastIndexOf('-') + 1); 

我可以看到这个post被浏览了46000多次。 我敢打赌,46000中的很多人都问这个问题只是因为他们只是想要文件名…而这些答案可以是一个兔子洞,如果你不能让你的子string逐字使用at符号。 这导致了一个兔子洞,如果真正的问题如何得到文件名是一个简单的答案。

这里应该提到。 即使它不是确切的答案。

result = Path.GetFileName(fileName); 请参阅https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx

请参阅String.lastIndexOf方法

test.Substring(test.LastIndexOf("-"))

 string atest = "9586-202-10072"; int indexOfHyphen = atest.LastIndexOf("-"); if (indexOfHyphen >= 0) { string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1); Console.WriteLine(contentAfterLastHyphen ); } 
 YourString.SubString(YourString.LastIndexOf("-"));