如何从下面的示例字符串中提取文件名(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”?
答案 0 :(得分:0)
'[^']*'
的正则表达式将匹配:
'abc test 1.xls'
'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>"
-----