如果我有以下字符串:
/ LOREM /存有/悲
我希望这成为:
/ LOREM /存有
删除最后一个正斜杠以及跟随它的所有字符的简便方法是什么?
我知道如何通过将字符串拆分为一个List<>并删除最后一个项目然后加入来完成此操作,但有没有更短的写入方式?
我的问题不是特定于URL.
new*_*rey 41
你可以使用Substring()和LastIndexOf():
str = str.Substring(0, str.LastIndexOf('/'));
Run Code Online (Sandbox Code Playgroud)
编辑(建议的评论)
为了防止字符串可能不包含任何问题/,你可以使用类似的东西:
int lastSlash = str.LastIndexOf('/');
str = (lastSlash > -1) ? str.Substring(0, lastSlash) : str;
Run Code Online (Sandbox Code Playgroud)
将位置存储在临时变量中可以防止需要调用.LastIndexOf('/')两次,但可以将其删除,而不是使用单行解决方案.
Xin*_*Xin 11
如果网址末尾有"/",请将其删除.如果不; 只返回原来的.
var url = this.Request.RequestUri.ToString();
url = url.EndsWith("/") ? url.Substring(0, url.Length - 1) : url;
url += @"/mycontroller";
Run Code Online (Sandbox Code Playgroud)
你可以做类似的事情str.Remove(str.LastIndexOf("/")),但是没有内置的方法来做你想做的事情.
编辑:您也可以使用Uri对象遍历目录,虽然它没有准确提供您想要的内容:
Uri baseUri = new Uri("http://domain.com/lorem/ipsum/dolor");
Uri myUri = new Uri(baseUri, ".");
// myUri now contains http://domain.com/lorem/ipsum/
Run Code Online (Sandbox Code Playgroud)
一种简单的方法是
String s = "domain.com/lorem/ipsum/dolor";
s = s.Substring(0, s.LastIndexOf('/'));
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)
另一个也许
String s = "domain.com/lorem/ipsum/dolor";
s = s.TrimEnd('/');
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32635 次 |
| 最近记录: |