我正在尝试在C#控制台中编写一个程序,基本上让用户输入一个句子,每个单词用逗号分隔,然后它将在控制台上显示每个单独的单词。这是我想要做的一个例子。
请输入以逗号分隔的句子:
你好,我的名字,是,约翰
然后输出看起来像这样
Hello, my, name, is, john
my, name, is, john
name, is, john
is, john
john
这是一项家庭作业,但课程在这一天被取消,所以我们从来没有上过这个课程。
根据我的阅读,你必须使用方法的索引,但到目前为止它只是打印索引号而不是实际的单词。这是我到目前为止所得到的,它非常裸露,但我刚刚开始。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Chapter_16_Sample_1
{
class Program
{
static void Main(string[] args)
{
string sentence;
Console.WriteLine("Please enter four words seperated by a comma");
sentence = Console.ReadLine();
int first = sentence.IndexOf(",");
Console.WriteLine("{0}", first);
Console.ReadLine();
}
}
}
就像我说它确实给出了我的第一个逗号的正确索引号,但是如果我能弄清楚如何取出整个单词,我想我可以想出这个作业。
答案 0 :(得分:0)
您将获得第一次出现逗号的索引,然后在控制台中显示它。
您需要String.Substring
方法从用户输入中获取子字符串。Substring
方法将index作为参数,然后返回从该索引开始直到字符串结尾的子字符串,除非您提供{ {3}}参数。
例如,此代码将在控制台中显示, John
:
string input = "Hello, John";
int index = input.IndexOf(',');
Console.WriteLine(input.Substring(index));
正如您所看到的,它还包括起始索引处的字符(在这种情况下为逗号,为了避免这种情况,您可以使用input.Substring(index + 1)
代替input.Substring(index)
现在,如果我们返回您的问题,您可以使用while
循环,然后获取子字符串,从第一个逗号开始,显示它并在每次迭代时更新userInput
的值。还有使用变量来保存字符串中第一个逗号的index
,所以当它变为-1
时,你会知道你的字符串中不存在逗号,然后你打破循环并显示最后一个部分:
string userInput = Console.ReadLine();
int index = userInput.IndexOf(','); // get the index of first comma
while (index != -1) // keep going until there is no comma
{
// display the current value of userInput
Console.WriteLine(userInput);
// update the value of userInput
userInput = userInput.Substring(index + 1).Trim();
// update the value of index
index = userInput.IndexOf(',');
}
Console.WriteLine(userInput); // display the last part
注意:我还使用count方法从userInput
中删除了尾随空格。
答案 1 :(得分:0)
你可以这样做:
idx
变量将保留IndexOf
检索到的最后一个逗号的位置。您可以使用IndexOf
的重载来指定搜索下一个逗号的起始索引。当 IndexOf
无法找到值时会返回-1
,这是停止循环的条件。 Substring
打印从位置idx+1
到字符串末尾的子字符串。代码是这样的。 请尝试理解它,如果你只是复制粘贴,你就不会学到任何东西。
Console.WriteLine("Please enter four words separated by a comma");
string sentence = Console.ReadLine();
Console.WriteLine(sentence);
int idx = -1;
while (true)
{
idx = sentence.IndexOf(',', idx + 1);
if (idx == -1) break;
Console.WriteLine(sentence.Substring(idx + 1));
}