如何通过忽略逗号c#来拆分字符串?

时间:2017-10-11 18:08:51

标签: c# .net split

我做了一个带有.cs文件的小项目,读取它们并返回文件中最常用的单词。但是,现在它返回最常见的单词是逗号。 我怎么能这样做,所以拆分字符串会忽略逗号?

例如:我有一个字符串:

  

,. ? a a,b cdef cfed,abef abef abef,

现在它返回最常见的词是' abef'并且它发生了2次(程序不计算第三个abef,最后是逗号的那个。)

另一个例子:

  

,. ? a a,b cdef cfed,abef abef abef ,,,

现在回来说最常用的单词是逗号','它发生了3次,但问题是 - 我希望我的程序忽略逗号并仅仅专注于单词。

Account.FirstName

3 个答案:

答案 0 :(得分:6)

Split可以将一系列字符分开。所以你可以分割空格和逗号。然后使用适当的StringSplitOption删除空条目

 string[] userText = richTextBox1.Text.ToLower().Split(new char[] { ' ', ','}, StringSplitOptions.RemoveEmptyEntries );

你也可以使用Linq用这样的代码计算一个单词的频率

var g = userText.GroupBy(x => x)
                .Select(z => new 
                { word = z.Key, count = z.Count()})
                .ToList();
string mostUsed = g.OrderByDescending(x => x.count)
                   .Select(x => x.word)
                   .FirstOrDefault();

答案 1 :(得分:3)

您可以用空字符串替换逗号,然后通过算法运行输出。

string original = ", . ? a a, b cdef cfed, abef abef abef,";
string noCommas = original.Replace(",", string.Empty);

参考: https://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx

答案 2 :(得分:2)

另一种选择是通过使用正则表达式Regex.Split更具体地使分割更容易扩展:

  string input = ", . ? a a, b cdef cfed, abef abef abef, , ,";
  string[] result = Regex.Split(input, @"\w+");

点击此处live testing

如果?是有效字,则正则表达式可以是@"\w+|\?"

所以,我的建议是使用正则表达式,即使分割方法现在已经足够了,因为它更强大并且可以轻松适应以后的更改。

作为奖励,学习正则表达式真是太好了。