C# 字符串的子字符串

C# 字符串的子字符串,c#,C#,我有一个类似filename\34\filename的字符串 我只需要把数值分开。 我能做什么 我使用了以下代码: string versionId = filename.Substring(filename.IndexOf("\\"), filename.LastIndexOf("\\")); 我可能也有目录名的文件名。如果是这种情况,如何从该字符串中获取数值?请尝试以下代码 string filename=@"filename\34\filename"; string[] lst=file

我有一个类似filename\34\filename的字符串 我只需要把数值分开。 我能做什么

我使用了以下代码:

string versionId = filename.Substring(filename.IndexOf("\\"), filename.LastIndexOf("\\"));
我可能也有目录名的文件名。如果是这种情况,如何从该字符串中获取数值?

请尝试以下代码

string filename=@"filename\34\filename";
string[] lst=filename.Split('\\');
int version=-1;
foreach(var i in lst)
{
    try
    {
        version= int.Parse(i);
    }
    catch{}                
}
Console.WriteLine(version);

使用正则表达式,但在输入格式不匹配时要小心:

string filename = @"filename\34\filename";
Console.WriteLine(new System.Text.RegularExpressions.Regex(@"^.*\\(\d*)\\.*$").Match(filename).Groups[1].Value);

如果您确信您的fileptah将具有静态格式,那么代码中的细微修改将为您提供精确的数值

请注意,仅当您具有以下文件位置格式时,此解决方案才有效:

RootDrive\NumeriCvalue\Filename.extension

测试数据:

string filePath = @"C:\34\test.txt";
string filePath = @"D:\32344\word.docx";
代码

 string versionId = filePath.Substring(filePath.IndexOf("\\")+1, filePath.LastIndexOf("\\")-3);

如果格式总是这样,只需拆分并获取值。否则,试试正则表达式。如何拆分?我用MSDN试过alsoStart:你是如何尝试拆分它的,出了什么问题?此外,您是否尝试过
Path
类中的方法?您当前的代码会发生什么情况?大概它不起作用,但它起什么作用呢?请显示一个简短但完整的程序来演示问题,描述实际和预期的输出。您确定所有字符串的格式都是
filename\34\filename
?如果是,则可以使用字符串操作或正则表达式拾取数值。