如何从c#winform中的字符串中提取文件名?

时间:2017-10-10 14:40:45

标签: c# winforms

如何从下面的示例字符串中提取文件名(excel电子表格.xls)?注意:这里的字符串可以是任何东西,只有已知的东西我的字符串是扩展名(.xls)&文件名用单引号括起来。

eDF = sqlsc.createDataFrame([Row(v=1, eng_1=10,eng_2=20),
                        Row(v=2, eng_1=15,eng_2=30),
                        Row(v=3, eng_1=8,eng_2=12)])
eDF.select('v','eng_1','eng_2').show()

+---+-----+-----+
|  v|eng_1|eng_2|
+---+-----+-----+
|  1|   10|   20|
|  2|   15|   30|
|  3|    8|   12|
+---+-----+-----+

这里我唯一知道的是扩展名(.xls)。通过使用string.Substring()&的组合string.IndexOf我可以在“.xls”之后得到文本,但是我需要在“.xls”之前获取文本到文件名。我怎样才能获得IndexOf之前出现的字符''(单引号)“.xls”?

2 个答案:

答案 0 :(得分:0)

'[^']*'的正则表达式将匹配:

  • 完全匹配55-71 'abc test 1.xls'
  • 完全匹配127-143 'xyz test 2.xls'

执行此操作的C#代码是:

    string text = @"...
    <table>
    <tr>
        <td>
            <a href=""javascript:parent.ShowSheet('abc test 1.xls')"">abc</a>
        </td>
        <td>
            <a href=""javascript:parent.ShowSheet('xyz test 2.xls')"">XYZ</a>
        </td>
    </tr>
    </table>...";

    var matches = Regex.Matches(text, "'[^']*'");

    foreach(var match in matches)
    {
       Console.WriteLine(match);
    }

这是一个工作的小提琴 - https://dotnetfiddle.net/JKzY6J

答案 1 :(得分:0)

  

这里的字符串可以是任何东西,只有字符串中的已知东西才是   扩展名(.xls)&amp;文件名用单引号括起来

'拆分字符串,只收取.xls

结尾的字谜
var fileNames = raw.Split('\'')
                   .Where(value => value.EndsWith(".xls"))
                   .ToList();

但是,如果字符串包含.xls'而没有先前的'字符,则可以打破上述方法。

"<a href=""Sheet('abc test 1.xls')"">abc.xml'</a><a href=""Sheet('xyz test 2.xls')""></a>"
                                        -----