输入一行英文文本(即英文及英文标点符号,输入别的会出错提示),识别文本中单词总个数以及每个单词的个数并输出
没考虑符号周全,就想着空格分割了。。嘿嘿,改用正则算了
using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using System.Text;
namespace ConsoleApp34
{
class Program
{
static void Main(string[] args)
{
Console.Write("输入英文文本:");
Stream steam = Console.OpenStandardInput();
Console.SetIn(new StreamReader(steam, Encoding.Default, false, 5000));
string s = Console.ReadLine().ToLower();
MatchCollection mc = Regex.Matches(s, @"[a-z\d]+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Console.WriteLine("单词总数:" + mc.Count);
var grp = mc.Cast<Match>().GroupBy(i => i.Groups[0].Value).OrderByDescending(i => i.Count()).ThenBy(i=>i.Key);
foreach (var g in grp)
{
Console.WriteLine(g.Key + ":" + g.Count());
}
Console.Read();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//调用
List<string> ls = new List<string>();
string stra = "";
Console.WriteLine("请输入字符:");
stra = Console.ReadLine();
foreach (char c in stra)
{
ls.Add(c.ToString());
}
int num = 0;
int i = 0;
int[] a = new int[100];
List<string> newls = new List<string>();
foreach (string str in ls)
{
if (str != " ")
{
i++;
}
if (str == " ")
{
if(i != 0)
{
a[num] = i;
num++;
i = 0;
}
}
}
if (i != 0)
{
a[num] = i;
num++;
i = 0;
}
string ans = "共有 "+ num.ToString()+" 个单词:";
int k = 0;
for (int j=0;j<num;j++)
{
k = j + 1;
ans += "第"+k.ToString() + "单词有" + a[j].ToString() + "个字母;";
}
Console.WriteLine(ans);
}
}
}
这是效果