web-dev-qa-db-fra.com

Lire les numéros de la console donnés sur une seule ligne, séparés par un espace

J'ai la tâche de lire n nombres donnés sur une seule ligne, séparés par un espace de la console.

Je sais comment le faire lorsque je lis chaque numéro sur une ligne distincte (Console.ReadLine()), mais j'ai besoin d'aide pour le faire lorsque les chiffres sont sur la même ligne.

11
tabula

Vous pouvez utiliser String.Split . Vous pouvez indiquer le ou les caractères que vous souhaitez utiliser pour fractionner la chaîne en plusieurs. Si vous n'en fournissez aucun, les espaces-blancs sont supposés être des caractères divisés (donc nouvelle ligne, tabulation, etc.):

string[] tokens = line.Split(); // all spaces, tab- and newline characters are used

ou, si vous souhaitez utiliser uniquement des espaces en tant que délimiteur:

string[] tokens = line.Split(' ');

Si vous voulez les analyser en int, vous pouvez utiliser Array.ConvertAll():

int[] numbers = Array.ConvertAll(tokens, int.Parse); // fails if the format is invalid

Si vous voulez vérifier si le format est valide, utilisez int.TryParse.

18
Rango

Vous pouvez diviser la ligne en utilisant String.Split() :

var line = Console.ReadLine();
var numbers = line.Split(' ');
foreach(var number in numbers)
{
    int num;
    if (Int32.TryParse(number, out num))
    {
        // num is your number as integer
    }
}
8
ChrFin

Vous pouvez utiliser Linq to read la ligne est ensuite divisée et enfin convertie chaque élément en nombres entiers:

  int[] numbers = Console
        .ReadLine()
        .Split(new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries)
        .Select(item => int.Parse(item))
        .ToArray();
5
Dmitry Bychenko

Vous devez simplement fractionner les données saisies.

string numbersLine = console.ReadLine();

string[] numbers = numbersLine.Split(new char[] { ' '});

// Convert to int or whatever and use
3
Kami

Cela vous aidera à supprimer les espaces vides supplémentaires présents à la fin ou au début de la chaîne d'entrée.

string daat1String = Console.ReadLine();
daat1String = daat1String.TrimEnd().TrimStart();
string[] data1 = daat1String.Split(null);
int[] data1Int = Array.ConvertAll(data1, int.Parse);
0
Rupesh Kamble