从字符串值c#中获取非数字值

Ric*_*ard 1 c# string

我有以下价值

string value = "11,.Ad23";
int n;
bool isNumeric = int.TryParse(value, out n);
Run Code Online (Sandbox Code Playgroud)

我控制字符串是否为数字.如果字符串不是数字且非数字,我需要获得非数字值,如下所示

结果必须如下

,.Ad
Run Code Online (Sandbox Code Playgroud)

我怎么能在c#中做到这一点?

Tim*_*ter 8

如果非数字是连续的并不重要,那很简单:

string nonNumericValue = string.Concat(value.Where(c => !Char.IsDigit(c)));
Run Code Online (Sandbox Code Playgroud)

在线演示:http://ideone.com/croMht

如果您使用.NET 3.5.正如评论中所提到的那样String.Concat(或者String.JoinDmytris的答案中)没有过载IEnumerable<string>,因此你需要创建一个数组:

string nonNumericValue = string.Concat(value.Where(c => !Char.IsDigit(c)).ToArray());
Run Code Online (Sandbox Code Playgroud)

这需要所有非数字.如果你想取中间部分,那么跳过数字,然后取全部直到下一个数字:

string nonNumericValue = string.Concat(value.SkipWhile(Char.IsDigit)
                                            .TakeWhile(c => !Char.IsDigit(c)));
Run Code Online (Sandbox Code Playgroud)