1)我需要计算句子里有多少单词。
但是如果我有一个以上的空白区怎么办?它算作一个词。需要解决方案。
There is four words. / count as 4 words
There is four words. / count as 5 words
我用:
int countWords = txt.Split().Length;
2)我需要从字符串中提取数字然后得到总和。我的代码无效,方法错误没有重载。
我的所有代码:
Console.Write("Ievadiet tekstu: ");
string txt = Console.ReadLine();
int sum = 0;
int countWords = txt.Split().Length;
foreach (char num in txt)
{
if (char.IsDigit(num))
sum += Int32.TryParse(num).ToString();
}
Console.WriteLine("There are {0} words in this sentence.",countWords);
Console.WriteLine("Summ is "+sum);
答案 0 :(得分:2)
将String.Split
的重载与StringSplitOptions.RemoveEmptyEntries
一起使用。您可以使用空char[]
(或string[]
)来获取与String.Split
相同的行为而不带参数,以便它按所有white-space characters分隔,如空格,制表符或新线字符。
如果您想将可以解析为int
的“字词”相加,那么请对int.TryParse
提取的所有字词使用String.Split
。您可以使用LINQ:
string[] words = text.Split(new char[] {}, StringSplitOptions.RemoveEmptyEntries);
int wordCount = words.Length;
int num = 0;
int sum = words.Where(w => int.TryParse(w, out num)).Sum(w => num);
答案 1 :(得分:0)
这是一个简单的控制台应用程序,可以执行您的操作。 它使用正则表达式捕获数字字符并对它们求和。 TryParse只是一个故障安全(我认为在这种情况下不需要它,因为正则表达式确保只捕获数字)。
static void Main(string[] args)
{
Regex digitRegex = new Regex("(\\d)");
string text = Console.ReadLine();
int wordCount = text.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries).Length;
int sum = 0;
foreach (Match x in digitRegex.Matches(text, 0))
{
int num;
if (int.TryParse(x.Value, out num))
sum += num;
}
Console.WriteLine("Word Count:{0}, Digits Total:{1}", wordCount, sum);
Console.ReadLine();
}
希望它有所帮助。干杯