C# 正则表达式:如何获得没有前导数字的文件名?

C# 正则表达式:如何获得没有前导数字的文件名?,c#,regex,C#,Regex,我对正则表达式和c-sharp完全没用:如何解析文件名中的前导数字?例如,413\u somename.后缀。我需要:\u somename.suffix 我怎样才能做到这一点 谢谢 p、 美国:数字的数量是一对n。总是相同的模式吗编号\u somename.后缀?那么imo正则表达式就太过分了,只会使事情变得复杂。 Regex rgx = new Regex("^[0-9]*"); string s = rgx.Replace("413_somename.suffix", ""); 试试这个

我对正则表达式和c-sharp完全没用:如何解析文件名中的前导数字?例如,
413\u somename.后缀
。我需要:
\u somename.suffix

我怎样才能做到这一点

谢谢


p、 美国:数字的数量是一对n。

总是相同的模式吗<代码>编号\u somename.后缀?那么imo正则表达式就太过分了,只会使事情变得复杂。
Regex rgx = new Regex("^[0-9]*");
string s = rgx.Replace("413_somename.suffix", "");
试试这个:

var s = "1234_somename.suffix";
var result = s.Substring(s.IndexOf("_"));
两个非正则表达式选项

首先,使用:

使用LINQ的另一个选项:

filename = String.Concat(filename.SkipWhile(Char.IsDigit));

@巴里-你基本上是对的,但在.Net
\d
中也包含所有Unicode数字。嗯,我喜欢linq版本,但在你发布它时,它不适用于SkipWhile…@sl3dg3-你在使用.Net 3.5吗?如果是这样,您需要
filename=新字符串(filename.SkipWhile(Char.IsDigit.ToArray())。另外,你能说明它是如何“不起作用”的吗?我在发布后测试了这两个选项。对不起,我错了。我忘了我在这里使用VB…;-)就语法而言,VB和Linq并不是一件好事。
filename = String.Concat(filename.SkipWhile(Char.IsDigit));