C# 如果分隔符是一个或多个空格,如何拆分字符串?

C# 如果分隔符是一个或多个空格,如何拆分字符串?,c#,string,loops,if-statement,C#,String,Loops,If Statement,我试图让它把输入的每一个单词都写在一行,即使单词之间有更多的空格,但我不知道这是怎么回事 string phrase = Console.ReadLine(); string currentWord = ""; for (int i = 0; i < phrase.Length; i++) { if (phrase[i] == ' ') Console.WriteLine(currentWord); currentWord = ""; while (phrase[i] ==

我试图让它把输入的每一个单词都写在一行,即使单词之间有更多的空格,但我不知道这是怎么回事

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);
string-phrase=Console.ReadLine();
字符串currentWord=“”;
for(int i=0;i
我只收到每个单词的最后一个字母。需要帮忙吗


如果我想打印短语的第n个单词(n来自输入),我该怎么做呢?

如果在
if
while
主体中不使用大括号,就会发生这种情况


用大括号将它们都写下来,并找出与当前代码的差异。

如果在
中不使用大括号,而在
正文中不使用大括号,就会出现这种情况


用大括号将它们都写下来,并找出与当前代码的差异。

由于在
if
语句中没有使用大括号,因此在每次迭代中都会执行此代码:

currentWord = "";
因此您重置了
currentWord
的值

您只需将
Split
方法与
StringSplitOptions一起使用即可。删除mptyentries
,无需重新发明轮子:

var words = phrase.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

由于在
if
语句中没有使用大括号,因此在每次迭代中都会执行此代码:

currentWord = "";
因此您重置了
currentWord
的值

您只需将
Split
方法与
StringSplitOptions一起使用即可。删除mptyentries
,无需重新发明轮子:

var words = phrase.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

我可能会这样做

首先添加此参考:

using System.Text.RegularExpressions;
然后,您可以使用简单的正则表达式将字符串拆分为单词,并使用foreach循环显示单词:

var phrase = Console.ReadLine();
var words = Regex.Split(phrase, @"\s+");

foreach(var word in words)
    Console.WriteLine(word)

与您现有的代码相比,这也更加简洁,使其更易于阅读、理解和维护。

我可能会这样做

首先添加此引用:

using System.Text.RegularExpressions;
然后,您可以使用简单的正则表达式将字符串拆分为单词,并使用foreach循环显示单词:

var phrase = Console.ReadLine();
var words = Regex.Split(phrase, @"\s+");

foreach(var word in words)
    Console.WriteLine(word)

与您的代码相比,这也更简洁,更易于阅读、理解和维护。

您可以使用
replace
方法替换char

以下代码:

Console.ReadLine().Replace(" ","");

您可以使用
replace
方法替换字符

以下代码:

Console.ReadLine().Replace(" ","");

如果while循环是正确的,那就不是什么大问题了。真正的错误是内部循环中缺少大括号。@Eva避免此类问题的方法是始终放置大括号。不使用大括号的唯一“好”理由是如果您有一个非常简单和简短的
if
语句(但仍然要使用它们)。空白也是你的朋友。如果您的代码中有一个空行,那么这一点会更加明显。你现在拥有的东西混合在一起,变得有点难以阅读。更好的缩进实践也会有所帮助。如果while循环是正确的,那么这并不是什么大问题。真正的错误是内部循环中缺少大括号。@Eva避免此类问题的方法是始终放置大括号。不使用大括号的唯一“好”理由是如果您有一个非常简单和简短的
if
语句(但仍然要使用它们)。空白也是你的朋友。如果您的代码中有一个空行,那么这一点会更加明显。你现在拥有的东西混合在一起,变得有点难以阅读。更好的缩进练习也会有所帮助。空白和适当的缩进也不会有什么坏处。所有的东西都塞满在一起,几乎所有的缩进都在同一个水平,这使得破译变得更加困难。空白和适当的缩进也不会有什么坏处。所有的东西都挤在一起,几乎都在同一个缩进水平上,这使得破译变得更加困难。