c#字符串循环没有特定的循环数

时间:2017-01-26 16:51:50

标签: c#

我遇到循环代码问题:

using System;
using System.Globalization;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = Console.ReadLine();
            TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
            Console.WriteLine(ti.ToTitleCase(text).Replace(" ", string.Empty));

            Console.ReadKey();
        }
    }
}

也许它写的不应该是因为我无法找到解决问题的方法。具体来说我希望这个程序在多行未知数字中输入句子,它删除所有空格并将每个单词的第一个字母改为大写。例如,输入数据是:

  

我想骑自行车,

     

但Rick说滑板更好。

输出是:

  

IWannaRideBicycle,

     

ButRickSaySkateboardIsBetter。

该程序不具备用户界面,所以我在考虑同时制作字符串列表但对我来说问题仍然是一种循环方式。我找到了一个C ++解决方案,他们使用"而(getline(cin,text){}"但我认为它在C#中没用。

3 个答案:

答案 0 :(得分:0)

while循环应该可以解决问题。如果没有更多行可用,Console.ReadLine将返回null。

std::forward_list

答案 1 :(得分:0)

username

我认为这可能是一个合适的解决方案。它将从控制台读取输入,直到用户只是点击“Enter”并向您发送一个空字符串。我不知道有一种更有活力的方式来实现你所追求的目标。

答案 2 :(得分:0)

这取决于您的输入。

如果是IEnumerable<string>,则只需使用foreach

var lines = ... //some IEnumerable<string>

foreach (var line in lines)
{
    //do your thing
}

只要在lines中有一行要枚举,这将继续循环。从理论上讲,它可以永远持续下去。

如果您的输入是Stream,那么围绕它构建一个StreamReader并基本上做同样的事情(但需要更多管道):

using (var inputStream = ...// some stream)
using (var reader = new StreamReader(inputStream))
{
     var line = reader.ReadLine();

     while (line != null)
     {
          //do your thing
          line = reader.ReadLine();
     }
}

只要输入流可以生成新行,它就会循环。