web-dev-qa-db-ja.com

スペースで区切られた1行で指定されたコンソールから数値を読み取ります

コンソールからスペースで区切られた1行でn個の指定された数値を読み取るタスクがあります。

別の行(Console.ReadLine())ですべての数値を読み取るときにそれを行う方法を知っていますが、数値が同じ行にある場合にそれを行う方法のヘルプが必要です。

12
tabula

_String.Split_ を使用できます。文字列を複数に分割するために使用する文字を指定できます。何も指定しないと、すべての white-spaces が分割文字(つまり、改行、タブなど)と見なされます。

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

または、区切り文字としてスペースのみを使用する場合:

_string[] tokens = line.Split(' ');
_

それらをintに解析したい場合は、Array.ConvertAll()を使用できます。

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

形式が有効かどうかを確認する場合は、_int.TryParse_を使用します。

19
Tim Schmelter

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

Linqからreadを使用して行を分割し、最後に各項目を整数に変換できます。

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

入力したデータを分割するだけです。

string numbersLine = console.ReadLine();

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

// Convert to int or whatever and use
3
Kami

できるよ

int[] Numbers  = Array.ConvertAll(Console.ReadLine().Split(' '),(item) => Convert.ToInt32(item));

上記の行は、シングルスペースで区切られたLine内の個々の整数を取得するのに役立ちます。数値間に2つ以上のスペースがあると、エラーが発生します。

int[] Numbers = Array.ConvertAll(Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries), (item) => Convert.ToInt32(item));

このバリエーションはエラーを修正し、行内の数値間に2つ以上のスペースがある場合でも適切に機能します

0
Arvind Reddy

これは、入力文字列の末尾または先頭にある余分な空白を削除するのに役立ちます。

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