我有一个字符串"D:\TFS\Portal\BusinessNotes\104668Desert.jpg"
。我想使用正则表达式方法来获取单词"Desert.jpg"
。我试过了
string[] lines = Regex.Split("D:\TFS\Portal\BusinessNotes\104668Desert.jpg", "[0-9]*");
但没有用。我想得到" Desert.jpg"在行[1]。我怎么能完成它。 ps:数字可能会保持长度变化
答案 0 :(得分:3)
您拥有的是一条路径,您可以使用Path.GetFileName
Path.GetFileName(@"D:\TFS\Portal\BusinessNotes\104668Desert.jpg");
---
编辑:然后你可以删除数字
var newName = string.Join(string.Empty, Path.GetFileName(pathFromAboveExample)
.ToCharArray()
.Where(c => !char.IsNumber(c)));
答案 1 :(得分:3)
你可以在没有REGEX的情况下做到这一点:
string filePath = @"D:\TFS\Portal\BusinessNotes\104668Desert.jpg";
string result = new String(Path.GetFileName(filePath)
.Where(r=> !char.IsDigit(r))
.ToArray());
或者如果你想通过REGEX这样做:
string result = Regex.Replace(Path.GetFileName(filePath), @"[\d-]", string.Empty);
答案 2 :(得分:0)
可能有一些更有效的方法,但以下将返回没有前导数字的文件名和扩展名:
Regex.Match(@"D:\TFS\Portal\BusinessNotes\104668Desert.jpg",
@"\\[0-9]+([a-zA-Z]+\.[a-zA-Z]+)$").Groups[1].Value
正则表达式转换为:
你可以更多地优化正则表达式,但我想展示发生了什么。
如果您决定拆分,则必须取第二个结果,因为第一个和第三个结果是空的