我试图让它在换行符中输入每个单词,即使单词之间有更多空格,但是我无法弄清楚这是怎么回事。
string phrase = Console.ReadLine();
string currentWord = "";
for (int i = 0; i < phrase.Length; i++)
{
if (phrase[i] == ' ')
Console.WriteLine(currentWord);
currentWord = "";
while (phrase[i] == ' ')
i++;
if (phrase[i] != ' ')
currentWord += phrase[i];
}
Console.WriteLine(currentWord);
我只是从每个单词中得到最后一个字母。有什么帮助吗?
如果说,我想打印出短语的第n个单词(n来自输入),我该怎么做?
答案 0 :(得分:2)
由于您没有在if
语句中使用花括号,因此该代码将在每次迭代中执行:
currentWord = "";
因此,您重置了currentWord
的值。
您可以将Split
方法与StringSplitOptions.RemoveEmptyEntries
一起使用,而无需重新发明轮子:
var words = phrase.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:1)
这就是当您在if
和while
正文中不使用花括号时发生的事情……
用大括号将它们都写上,并在当前代码中找出差异。
答案 2 :(得分:0)
我可能会这样做。.
首先添加此引用:
using System.Text.RegularExpressions;
然后,您可以使用简单的正则表达式将字符串拆分为单词,并使用foreach循环显示单词:
var phrase = Console.ReadLine();
var words = Regex.Split(phrase, @"\s+");
foreach(var word in words)
Console.WriteLine(word)
与您所拥有的代码相比,这也更简洁,使它的阅读,理解和维护变得更加容易。
答案 3 :(得分:0)
您可以使用Replace
方法替换char
关注代码:
Console.ReadLine().Replace(" ","");