C# 如何从整体中获取字符串

C# 如何从整体中获取字符串,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个字符串,其文本类似于: 电子书/AspNetBook.Pdf/.NetBook 或 电子书/Asp.Net/AspNetBook.Pdf/.NetBook 也许是这样 电子书/Asp.Net/.NetBook/AspNetBook.Pdf 这意味着字符串可能会带有许多前斜杠,并且不会以固定格式出现。我想从这个字符串中获取文件名及其extAspNetBook.Pdf 我试图让字符串使用子字符串或替换句点之前的字符,但没有得到正确的结果 这可能会对你有所帮助 string s

我有一个字符串,其文本类似于:

电子书/AspNetBook.Pdf/.NetBook

电子书/Asp.Net/AspNetBook.Pdf/.NetBook

也许是这样

电子书/Asp.Net/.NetBook/AspNetBook.Pdf

这意味着字符串可能会带有许多前斜杠,并且不会以固定格式出现。我想从这个字符串中获取文件名及其ext
AspNetBook.Pdf

我试图让字符串使用子字符串或替换句点之前的字符,但没有得到正确的结果

这可能会对你有所帮助

        string st = "Ebook/AspNetBook.Pdf/.NetBook";
        string newst = st.Substring(st.IndexOf('/') + 1);
        string outptst = newst.Substring(0,newst.IndexOf('/'));
因为你想得到两条斜线之间的字符串。这将为您提供所需的正确输出


这里p1将找到第一个“/”索引,p2将在p1之后找到“/”索引

String text= "Ebook/AspNetBook.Pdf/.NetBook";
int p1=text.indexOf('/');   
int p2=-1;
if(p1!=-1)
p2=text.indexOf('/',p1+1);

if(p1!=-1&&p2!=-1)
System.out.print(text.substring(p1+1,p2);
试试这个:

string st = "Ebook/AspNetBook.Pdf/.NetBook";
string out = st.Split('/')[1];

请注意,只有当您的输入中始终有一个
/
并且它始终是第二个值时,这才有效。

如果您的字符串始终具有特定的格式
string1/string2/string3
,则可以使用简单的字符串拆分或正则表达式

var xx = input.Split('/')[1];


请注意,这不包含错误检查,例如,如果输入与给定表单不匹配

是否可以显示您尝试过的代码??文本中只有两个正斜杠?您假设字符串与上述内容完全相同,没有额外或缺少斜杠。你还有一个悬而未决的问题没有澄清。我认为这是早熟易碎的。如果OP描述的字符串是逐字逐句的,并且永远不会改变,我同意这是正确的。@DavidL:我附上了图片来证明。这回答了OP想要的,如果不是一个向上的投票,但我相信它不需要也有一个向下的投票。没有澄清,我不相信这个问题可以回答,但我确实同意,因为它似乎解决了一个不明确的问题,所以你的答案不值得投反对票,我收回了我的答案。这看起来更令人信服。:)也许我不应该使用out关键字作为变量名,但是……这实际上只是Mohit答案的一个更复杂、更混乱的版本。调用
子字符串的第二个参数是错误的。根据文档,它应该包含子字符串的长度,而不是结束索引,就像在代码中一样
var xx = Regex.Match(input, @".+/(.+)/.+").Groups[1].Value;