【问题标题】:Getting part of the filename C#获取文件名的一部分 C#
【发布时间】:2012-06-12 13:54:11
【问题描述】:

我有一个文件名dayhappy_02_02345.csv

如何获取02 部分以在变量中使用,以及如何获取02345 部分,以便将这两个值传递给函数的变量。

使用 c#。

我查看了GetFileName,但这只能获取文件名、扩展名或完整文件名。

谢谢

步骤

【问题讨论】:

    标签: c# filenames


    【解决方案1】:

    对于那个特定的文件名,

    string sData = "dayhappy_02_02345.csv";
    string[] sArr = sData.split('_');
    
    string sPart1 = sArr[1];
    string sPart2 = sArr[2];
    

    可以,但这是一种特殊情况,适用于这种类型的文件名

    【讨论】:

    • 我认为您的答案可能有效,但我使用的是 Dts.Variable 并且带有扩展名的文件名位于变量中。这行得通吗?您可以简单地替换字符串 sData = Dts.Variables["filenameVariable"].Value。感谢您的快速响应
    • 当然可以。此外,您必须在此代码中插入一些验证,我没有包含在上面的示例中
    • 我现在有这个:string fileName = Dts.Variables["csvFileNames"].Value; string[] sArray = fileName.Split('_');字符串 02345Number = sArray[1];字符串 02Number = sArray[2]; MessageBox.Show(02345Number);说不能将对象转换为字符串。我在这里真的很傻,我认为并且我缺少语法,但我有这个:使用 Microsoft.SqlServer.Dts.Runtime;在命名空间中,所以我不知道这会有什么问题。感谢您的帮助
    • 对不起,我太愚蠢了。我错过了一个()。哈哈谢谢
    【解决方案2】:

    获取您已经知道的文件名,然后使用String.Split() 获取各个部分。

    【讨论】:

    • 我不建议使用字符串方法,因为更改格式会迫使您更改代码,而使用 Regex 您可以将字符串设置为配置设置,而且它更灵活、更强大。跨度>
    • @Mr.TA - 很公平。我大体上同意,但在这个具体的例子中, String.Split 就足够了。这是主观的,但我喜欢尽可能简洁的代码。另外,这显然是一个非常新的开发人员,所以我给出了最简单的答案。学习正则表达式是一件必须要做的事情,但他现在是否需要它,对于这种情况?我在跑步前想着婴儿步。但是,我还是同意你所说的。
    • 文件名不断变化,但扩展名没有变化,我也将文件放在 dts 变量中。正则表达式方式是最好的前进方式吗?
    • 从其他答案来看,分裂更受欢迎,我与人们的选择有什么争论:)
    • @Steven “文件名不断变化” - 意味着它的格式不断变化?
    【解决方案3】:

    你必须使用正则表达式:

    var match = new Regex(@".*_(\d+)_(\d+)").Match(Path.GetFileNameWithoutExtension(fileNAme));
    var v02 = match.Groups[0].Value;
    var v02345 = match.Groups[1].Value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多