Как разбить строку, если в качестве разделителя используется один или несколько пробелов? - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь заставить это написать каждое слово из ввода в новой строке, даже если между словами больше пробелов, но я не могу понять, что с этим не так.

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 из ввода), как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

Вы можете заменить char на Replace method

Follow code:

Console.ReadLine().Replace(" ","");
0 голосов
/ 04 октября 2018

Поскольку вы не используете фигурные скобки в своем выражении if, этот код выполняется на каждой итерации:

currentWord = "";

Таким образом, вы сбрасываете значение currentWord.

Вы можете просто использовать метод Split с StringSplitOptions.RemoveEmptyEntries, нет необходимости заново изобретать колесо:

var words = phrase.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 04 октября 2018

Я бы, вероятно, сделал бы это следующим образом ..

Сначала добавьте эту ссылку:

using System.Text.RegularExpressions;

Затем вы можете использовать простое регулярное выражение для разбиения вашей строки на слова и цикл foreach дляотобразите слова:

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

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

Это также намного чище по сравнению с вашим кодом, что значительно облегчает чтение, понимание и обслуживание.

0 голосов
/ 04 октября 2018

Вот что происходит, когда вы не используете фигурные скобки в if и while телах ...

Напишите их в скобках и найдите разницу с вашим текущим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...