C# 如何剪线

C# 如何剪线,c#,C#,我有一个像 “/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben” 我只需要“175_Jahre_STAEDTLER_Faszination_Schreiben”,其中“root”是分隔符。我如何才能做到这一点?查看System.IO.Path方法-不完全是文件和文件夹,但使用/delimiter可能会奏效 “/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszin

我有一个像 “/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben”


我只需要“175_Jahre_STAEDTLER_Faszination_Schreiben”,其中“root”是分隔符。我如何才能做到这一点?

查看System.IO.Path方法-不完全是文件和文件夹,但使用/delimiter可能会奏效

“/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben”。拆分(“/root/”[1]
应给出“175_Jahre_STAEDTLER_Faszination_Schreiben”

用于以“root”作为分隔符分隔字符串。然后使用结果数组的第二个元素。

另一种方法:

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);
String newstring = file_path.Substring(file_path.LastIndexOf('/') + 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();
}
string s=“/LM/W3SVC/1216172363/root/175_Jahre_STAEDTLER_Faszination_Schreiben”;
正则表达式re=新正则表达式(@“/root/(?\w+)$”;
匹配m=重新匹配;
如果(m.成功){
返回m.Groups[“goodPart”].ToString();
}

如果您需要根据基本路径(听起来像是您试图解决的问题,或者至少是您问题的概括)找到相对路径,您可以使用System.Uri类。然而,它确实有它的局限性。查找相对路径最干净、最正确的方法是使用DirectoryInfo。使用DirectoryInfo,您可以“遍历”目录树(向后或向前),并在此基础上构建层次结构。然后,只需做一点集合操作,过滤掉重复项,剩下的就是相对路径。有一些细节,比如在正确的位置添加省略号等等,但是为了基于当前操作系统平台解析路径,DirectoryInfo是一个很好的起点


仅供参考-我刚刚在工作中完成了一个组件的编写,因此它在我的脑海中相当新鲜。

+1对于标题,它提醒我如何正确语法突出显示狮子座字符串有多长?psst…别忘了标记对你有用的答案。如果没有答案,请随意编辑您的问题。朱丽:您是否有机会尝试解析XML?如果是这样的话,我将为您发布一个XPath示例。只需快速检查一下:这些答案都不适用于您吗?如有必要,您可以随时编辑问题。如果答案有效,别忘了接受。这似乎可能会产生一些难看的副作用。@Mike-是的,你可能是对的。我更喜欢分割答案。是的,因为假设什么是有效分隔符。最好避免。当然,您可能应该将其分配给一个变量,并检查它是否能够正确拆分字符串,以避免格式错误的字符串出现异常。他确实提到他想在“根”上拆分,不一定是在任意斜杠上…但这对于一般的拆分是很好的。对于更复杂的问题,正则表达式绝对是一个很好的解决方案(我不知道OP的问题实际上有多复杂)…您只需要考虑性能的小影响。正则表达式有它的位置,但是如果一个简单的拆分或子字符串就可以做到这一点,那么使用正则表达式实际上是有害的。(我不反对正则表达式;我一直在使用它们!只是提供一些有用的评论:)@NickAldwin,我同意,只是提供了一个完整性的替代方案。我希望我编辑了我的答案,让它更清楚一点。是的,我理解这一点,我认为让备选方案可见很重要(因此我的投票:)。我只是想澄清一下正则表达式和分裂点。谢谢你的发帖(以及为了清晰起见的编辑)!
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);