Как разделить несколько строк списка, взятых в качестве ввода в одну строку в c# - PullRequest
1 голос
/ 12 февраля 2020

Программа принимает входные данные в виде списка сообщений в одну строку, а вот сообщения messages = "электронная почта от Рама в 10:10 утра" "электронная почта от Рама sh в 10:15 утра" "электронная почта от Раджана в 10 : 20:00 "" электронная почта от Rake sh в 10:25 ". Это сообщение принимается как ввод в одной строке, и мы должны отобразить его отдельно в другой строке, вот мой код, и я получаю ошибку.

using System;
using System.Collections;
class HelloWorld 
{
  static void Main() 
 {

    string c=Console.ReadLine();
    string[] sl=c.Split("" "");
    foreach(string cc in sl)
        Console.WriteLine(cc);
  }
}

Формат ввода

"email from Ram at 10:10 am" "email from Ramesh at 10:15 am" "email from Rajan at 10:20 am" "email from Rakesh at 10:25 am"

Ожидаемый результат:

email from Rakesh at 10:25 am
email from Rajan at 10:20 am
email from Ramesh at 10:15 am
email from Ram at 10:10 am

Пожалуйста, помогите, поскольку я новичок в c#

Ответы [ 2 ]

5 голосов
/ 12 февраля 2020

Попробуйте это:

var str = @"email from Ram at 10:10 am"" ""email from Ramesh at 10:15 am"" ""email from Rajan at 10:20 am"" ""email from Rakesh at 10:25 am";

string[] sl=str.Trim().Split(new string[] { "\" \"" }, StringSplitOptions.None);

foreach(string st in sl) {
    Console.WriteLine(st);
}

Вывод:

электронная почта от Рама в 10:10

электронная почта от Рэйма sh в 10:15

электронная почта от Раджана в 10:20

электронная почта от Рейка sh в 10:25

Результаты проверки здесь: https://dotnetfiddle.net/5zlfJf

2 голосов
/ 12 февраля 2020

Можно использовать дополнительные ", поскольку они являются частью строкового литерала. И они будут интерпретироваться компилятором как один ":

var str = @"email from Ram at 10:10 am"" ""email from Ramesh at 10:15 am"" ""email from Rajan at 10:20 am"" ""email from Rakesh at 10:25 am";            
var splitted = str.Split(new string[] { @""" """ }, StringSplitOptions.None);

или другим способом:

Попробуйте использовать Split:

var str = @"email from Ram at 10:10 am"" ""email from Ramesh at 10:15 am"" ""email from Rajan at 10:20 am"" ""email from Rakesh at 10:25 am";
var splitted = str.Split(new []{ '"'}, StringSplitOptions.RemoveEmptyEntries)
    .Where(s=> !string.IsNullOrWhiteSpace(s)).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...