如何将IEnumerable<char>"nonLetters" 转换为a string[]以便我可以将它与String.Join一起使用?
string message = "This is a test message.";
var nonLetters = message.Where(x => !Char.IsLetter(x));
Console.WriteLine("There are {0} non-characters in \"{1}\" and they are: {2}",
nonLetters.Count(),
message,
String.Join(", ", nonLetters.ToArray())
);
Run Code Online (Sandbox Code Playgroud)
Luk*_*keH 12
string[] foo = nonLetters.Select(c => c.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)
如果您实际上并不关心使用String.Join但只想要结果,则使用新字符串(char [])是最简单的更改:
string message = "This is a test message.";
var nonLetters = message.Where(x => !Char.IsLetter(x));
Console.WriteLine("There are {0} non-characters in \"{1}\" and they are: {2}",
nonLetters.Count(),
message,
new string(nonLetters.ToArray()));
Run Code Online (Sandbox Code Playgroud)
但是对于你的例子,如果你这样做会更有效:
string message = "This is a test message.";
string nonLetters = new string(message.Where(x => !Char.IsLetter(x)).ToArray());
Console.WriteLine("There are {0} non-characters in \"{1}\" and they are: {2}",
nonLetters.Length,
message,
nonLetters);
Run Code Online (Sandbox Code Playgroud)
究其原因,这是更有效的是,其他的例如迭代你哪里迭代器两次:一次是对count()调用,其他时间ToArray的()调用.