我有一个字符串 “/ LM / SVC / 1216172363 /根/ 175_Jahre_STAEDTLER_Faszination_Schreiben”
我只需要“175_Jahre_STAEDTLER_Faszination_Schreiben”,其中“root”是分隔符。我怎么能这样做?
答案 0 :(得分:20)
"/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben".Split("/root/")[1]
应该给你“175_Jahre_STAEDTLER_Faszination_Schreiben”
答案 1 :(得分:4)
另一种方法:
String newstring = file_path.Substring(file_path.LastIndexOf('/') + 1);
答案 2 :(得分:2)
查看System.IO.Path方法 - 不是文件和文件夹,但使用/ delimiter它可能会起作用!
答案 3 :(得分:1)
如果您希望根据整体模式提取字符串的一部分,正则表达式可以在某些情况下是一个很好的选择。
string s = "/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben";
Regex re = new Regex(@"/root/(?<goodPart>\w+)$");
Match m = re.Match(s);
if (m.Success) {
return m.Groups["goodPart"].ToString();
}
答案 4 :(得分:1)
string s = "/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben";
string separator = "root";
string slash = "/";
int idx = s.IndexOf(separator);
string result = s.SubString(idx + separator.Length + slash.Length);
答案 5 :(得分:0)
使用String.Split将字符串与“root”分隔为分隔符。然后使用结果数组的第二个元素。
答案 6 :(得分:0)
string s = "/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben";
int li = s.LastIndexOf("root/");
s = s.Substring(li + 5, s.Length - 1 - (li + 4));
MessageBox.Show(s);
答案 7 :(得分:0)
如果您需要根据基本路径找到相对路径(这听起来像您要解决的问题,或者至少是您的问题的一般化),您可以使用System.Uri类。但它确实有它的局限性。查找相对路径最干净,最正确的方法是使用DirectoryInfo。使用DirectoryInfo,您可以“遍历”目录树(向后或向前)并基于此构建层次结构。然后只需做一点设置操作来过滤掉重复项,你剩下的就是你的相对路径。有一些细节,比如在正确的位置添加省略号等等,但DirectoryInfo是一个很好的起点,可以根据当前的OS平台解析路径。
仅供参考 - 我刚刚在工作中写完了一个组件就是为了做到这一点所以它在我脑海中相当新鲜。