C# 将给定字符串溢出的正则表达式
我有一个字符串C# 将给定字符串溢出的正则表达式,c#,regex,C#,Regex,我有一个字符串“D:\TFS\Portal\BusinessNotes\104668Desert.jpg”。我只想使用regex方法获取单词“Desert.jpg”。我试过了 string[] lines = Regex.Split("D:\TFS\Portal\BusinessNotes\104668Desert.jpg", "[0-9]*"); 但是没有用。我想在第[1]行中获得“Desert.jpg”。我如何才能实现它。 注:数字可能会保持长度的变化您拥有的是一条路径,您可以使用它 编
“D:\TFS\Portal\BusinessNotes\104668Desert.jpg”
。我只想使用regex方法获取单词“Desert.jpg”
。我试过了
string[] lines = Regex.Split("D:\TFS\Portal\BusinessNotes\104668Desert.jpg", "[0-9]*");
但是没有用。我想在第[1]行中获得“Desert.jpg”。我如何才能实现它。
注:数字可能会保持长度的变化您拥有的是一条路径,您可以使用它 编辑:然后你可以去掉数字
var newName = string.Join(string.Empty, Path.GetFileName(pathFromAboveExample)
.ToCharArray()
.Where(c => !char.IsNumber(c)));
你拥有的是一条路径,你可以使用它 编辑:然后你可以去掉数字
var newName = string.Join(string.Empty, Path.GetFileName(pathFromAboveExample)
.ToCharArray()
.Where(c => !char.IsNumber(c)));
您可以在不使用正则表达式的情况下执行此操作,如:
string filePath = @"D:\TFS\Portal\BusinessNotes\104668Desert.jpg";
string result = new String(Path.GetFileName(filePath)
.Where(r=> !char.IsDigit(r))
.ToArray());
或者,如果您想通过正则表达式执行此操作,则:
string result = Regex.Replace(Path.GetFileName(filePath), @"[\d-]", string.Empty);
您可以在不使用正则表达式的情况下执行此操作,如:
string filePath = @"D:\TFS\Portal\BusinessNotes\104668Desert.jpg";
string result = new String(Path.GetFileName(filePath)
.Where(r=> !char.IsDigit(r))
.ToArray());
或者,如果您想通过正则表达式执行此操作,则:
string result = Regex.Replace(Path.GetFileName(filePath), @"[\d-]", string.Empty);
可能有一些更有效的方法来执行此操作,但以下方法将返回文件名和扩展名,而不返回前导数字:
Regex.Match(@"D:\TFS\Portal\BusinessNotes\104668Desert.jpg",
@"\\[0-9]+([a-zA-Z]+\.[a-zA-Z]+)$").Groups[1].Value
正则表达式转换为:
- 查找反斜杠:\
- 后跟数字(1或更多):[0-9]+
- 并捕获该组:(
- 包含字母:[a-zA-Z]+
- 然后是一个点:
- 然后是字母:[a-zA-Z]+
- 结束捕获)
- 它必须位于该行的末尾:$
如果决定拆分,则必须使用第二个结果,因为第一个和第三个结果为空可能有一些更有效的方法来执行拆分,但以下将返回文件名和扩展名,而不返回前导号码:
Regex.Match(@"D:\TFS\Portal\BusinessNotes\104668Desert.jpg",
@"\\[0-9]+([a-zA-Z]+\.[a-zA-Z]+)$").Groups[1].Value
正则表达式转换为:
- 查找反斜杠:\
- 后跟数字(1或更多):[0-9]+
- 并捕获该组:(
- 包含字母:[a-zA-Z]+
- 然后是一个点:
- 然后是字母:[a-zA-Z]+
- 结束捕获)
- 它必须位于该行的末尾:$
如果您决定拆分,您将不得不使用第二个结果,因为第一个和第三个结果是空的您能给我一个有效和无效输入的示例吗?您能给我一个有效和无效输入的示例吗?它返回104668Desert.jpg这不是OP的结果wants@Sayse,现在您需要一个
Where
而不是Select
,否则结果将是true
和false
。另外,你也不需要ToCharArray
@Habib-再次感谢:)(我的日常工作使用一种语言,Select做的是c做的,我在哪里把它们混淆了很多:)@Sayse,这仍然不编译IsNumber
是char
上的一个静态方法,所以它应该是char.IsNumber(x)
,另外,string.Join
需要两个参数,缺少分隔符。@Habib-再次感谢,我现在已经测试过了,并且一切正常。它返回的是104668Desert.jpg,而不是OPwants@Sayse,现在您需要一个Where
而不是Select
,否则结果将是true
和false
。另外,你也不需要ToCharArray
@Habib-再次感谢:)(我的日常工作使用一种语言,Select做的是c做的,我在哪里把它们混淆了很多:)@Sayse,这仍然不编译IsNumber
是char
上的一个静态方法,所以它应该是char.IsNumber(x)
,另外,string.Join
需要两个参数,分隔符丢失。@Habib-再次感谢,我现在已经测试过了,一切正常