我需要创建一个程序,显示其中包含最多单词的句子。
string [] st = { "I like apples.",
"I like red apples.",
"I like red apples than green apples."
};
foreach (string s in st)
{
int NumberOfWords = s.Split(' ').Length;
}
结果应显示“我喜欢红苹果而不是青苹果”。
答案 0 :(得分:3)
您的表单中可能有不同TextBox
控件的句子。你知道哪个句子里面有更多的单词;按空格分割句子并获得单词计数然后你可以比较。类似下面的东西。
int str1 = "I like apples".Split(' ').Length;
int str2 = "I like red apples".Split(' ').Length;
int str3 = "I like red apples than green apples".Split(' ').Length;
这里split()
个函数返回一个字符串数组,因此你可以得到它Length
。现在你可以轻松地比较它们了。
修改强>
下面是您发布的代码的完整示例代码。将单词计数存储在int[]
数组中。然后对数组进行排序。显然,下面arr
中的最后一个元素是具有最高单词的元素。
static void Main(string[] args)
{
int[] arr = new int[3];
string[] st = { "I like apples.", "I like red apples.",
"I like red apples than green apples." };
int counter = 0;
foreach (string s in st)
{
int NumberOfWords = s.Split(' ').Length;
arr[counter] = NumberOfWords;
counter++;
}
Array.Sort(arr);
Console.WriteLine(st[arr.Length - 1]);
}
答案 1 :(得分:2)
var result = st
.OrderByDescending(s => s.Split(' ').Count())
.First();
答案 2 :(得分:1)
如果您阅读其记录的摘要,您的代码就会非常好,那么您会看到s.Split()
将返回包含指定字符的substring
。但如果它是空的,那么你将获得单词的数量。所以你可以用它作为:
int NumberOfWords = s.Split().Length;
请分享结果。
编辑: 在你的循环声明一个整数
之前int largest = 0;
然后在你的循环中将代码写为
int NumberOfWords = s.Split().Length;
if(NumberOfWords > largest)
{
this.label1.Text = s;
largest = NumberOfWords;
}
通过这种方式,您将获得Text
Label
中包含大量字词的字符串
答案 3 :(得分:1)
这是使用Linq的快速单行:
return st.Select(s => s.Split(' ')).OrderByDescending(a => a.Length).First().Aggregate((s, next) => s + " " + next);
基本上我们采取4个单独的操作,并使用Linq将它们转换为一个声明。
在课堂上,这可能看起来像:
public string LongestString(params string[] args)
{
return args.Select(s => s.Split(' ')).OrderByDescending(a => a.Length).FirstOrDefault().Aggregate((s, next) => s + " " + next);
}
您希望通过包含"使用System.Linq;"来确保包含Linq命名空间。在文件的顶部(如果它还没有)。
答案 4 :(得分:0)
您可以使用Regex.Matches()
获取字数,如下例所示:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
const string t1 = "To be or not to be, that is the question.";
Console.WriteLine(WordCounting.CountWords1(t1));
const string t2 = "Mary had a little lamb.";
Console.WriteLine(WordCounting.CountWords1(t2));
}
}
/// <summary>
/// Contains methods for counting words.
/// </summary>
public static class WordCounting
{
/// <summary>
/// Count words with Regex.
/// </summary>
public static int CountWords1(string s)
{
MatchCollection collection = Regex.Matches(s, @"[\S]+");
return collection.Count;
}
}
答案 5 :(得分:0)
这应该有效
var text = @"This is some random text for testing";
var counts = text
.Where(c => char.IsLetter(c)) // Make sure it's only a letter
.Select(c => char.ToUpper(c)) // uppercase it
.GroupBy(c => c) // Group the letters
.Select(g => new
{
Character = g.Key,
Count = g.Count(),
}) // Select into char and count to make accessing easier
.OrderBy(x => x.Character); // Order alphabetically
foreach (var c in counts)
{
Console.WriteLine($"Letter: {c.Character}\t Count: {c.Count}");
}