使用IndexOf分隔句子中的单词
本文关键字:单词 句子 IndexOf 分隔 使用 | 更新日期: 2023-09-27 18:00:23
我正试图在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();
}
}
}
就像我说的,它确实给了我第一个逗号的正确索引号,但如果我能想出如何拉出整个单词,我想我就能想出这个任务。
您将获得逗号第一次出现的索引,然后将其显示在控制台中。
您需要String.Substring
方法从用户输入中获取子字符串。Substring
方法将index作为参数,然后返回从该索引开始直到字符串结束的子字符串,除非您提供count参数。
例如,此代码将在控制台中显示, 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
注意:我还使用了String.Trim
方法来删除userInput
的尾部空格。
你可以这样做:
- 读这个句子
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));
}