如何从c#中的特定字符串中获取子字符串

时间:2015-09-19 15:02:03

标签: c# winforms

我有

string filepath = @"F:\first_folder\Node3_V_1.3";

我有一个名为version_check

的按钮

点击此按钮,我想打印消息:

  

将node3升级到版本1.3

详细信息来自字符串filepath。我如何用C#编写代码。

3 个答案:

答案 0 :(得分:2)

你可以这样做

version_check.Click += version_check_Click;  //subscription of the event

public void version_check_Click(object sender, EventArgs e)
{
    string filepath = @"F:\first_folder\Node3_V_1.3";
    var name = Path.GetFileName(filepath).Split(new[] {'_', 'V'}, StringSplitOptions.RemoveEmptyEntries);
    if (name.Length < 1)
    {
        MessageBox.Show("Failed to update");
        return;
    }    
    MessageBox.Show(string.Format("Upgrading {0} to version {1} ...", name[0], name[1]));
}

调试信息:

enter image description here

答案 1 :(得分:1)

使用.NET Framework中已有的类

非常简单

Path class有一个方法GetFileName,如果它不是真正的文件名而只是一个文件夹,它也会占用路径名的最后一部分....

string filePath =  @"F:\first_folder\Node3_V_1.3";
string lastFolder = Path.GetFileName(filePath);
Console.WriteLine(lastFolder);

现在,如果您的lastFolder通常由三部分组成(IE,软件,每个版本的V,最后是版本号),您可以使用String class的拆分方法来划分lastFolder 1}}分三部分

string[] parts = lastFolder.Split('_');
Console.WriteLine("Upgrading {0} to version {1}", parts[0], parts[2]);

如果您使用C#6.0,您还可以使用string interpolation

编写最后一个语句
Console.WriteLine($"Upgrading {parts[0]} to version {parts[2]}");

答案 2 :(得分:0)

这适用于您提供的示例文件夹路径

 private void version_check_Click(object sender, EventArgs e)
        {
           string version =   "F:\\first_folder\\Node3_V_1.3";
           var result = version.Substring(version.LastIndexOf('\\') + 1);
           string[] splitString = result.Split('_').ToArray();
           MessageBox.Show("upgrading "+ splitString[0] + " to version" + splitString[2]);

        }