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
语句(但仍然要使用它们)。空白也是你的朋友。如果您的代码中有一个空行,那么这一点会更加明显。你现在拥有的东西混合在一起,变得有点难以阅读。更好的缩进练习也会有所帮助。空白和适当的缩进也不会有什么坏处。所有的东西都塞满在一起,几乎所有的缩进都在同一个水平,这使得破译变得更加困难。空白和适当的缩进也不会有什么坏处。所有的东西都挤在一起,几乎都在同一个缩进水平上,这使得破译变得更加困难。