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.
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
.
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
}
}
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();
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
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);