2015-10-27 141 views
-2

我想跳过字符之间的空白区域。例如,我有这样的:通过阅读字符跳过空白

abc def ghi,则输出必须是:

a = 1 
b = 1 
c = 1..etc 

,但现在我得到:

"" = 2. 

因为有人物之间有两个空格。

我尝试这样的:

SortedDictionary<char, int> dictionary = new SortedDictionary<char, int>(); 

Console.WriteLine("Enter a string: "); // prompt for user input 
string input = Console.ReadLine(); // get input 

// split input text into tokens 
char[] letters = Regex.Split(input.ToCharArray().ToString(), @"\s+"); 
+0

'Regex.Split'返回一个字符串'[]'不是'的char []'。如果你想要一个字符串中的所有字符,那么你需要'char [] letters = input.ToArray()'。你只是想计算'string'中每个字符有多少个?你可以给你一个完整的预期输出为你的输入。 – juharr

+0

你想跳过空格。那么'a = 1','b = 1'是什么?对不起,但我没有得到它 –

回答

5

刚刚从你的阵列忽略空格:

using System.Linq; 

// Your other code 
char[] letters = input.Where(c => c != ' ').ToArray(); 

一个字符串,本质上是一种char阵列,所以你不需要用它投那个电话。

+0

谢谢,但后来我会得到这个错误:1 \t不能隐式地将类型'char []'转换为'char' – InfinityGoesAround

+0

你从哪里得到那个错误? 'input.Where()'将返回一个'IEnumerable ',而'.ToArray()'将它变成一个'char []'。您可以随时将'letters'的类型改为'var'。 – krillgar

+0

啊,是的。谢谢!! – InfinityGoesAround

0

如果你想匹配模式的分裂:

var pattern = @"\s+"; 
char[] letters = Regex.Split(input, pattern).Aggregate(String.Concat).ToCharArray();