Saya memiliki string yang mirip dengan ini

string text = "3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;3;4;5;6;7;;";

Saya ingin mengubah string di atas menjadi array int seperti

[[3,4,5,6,7],[3,4,5,6,7], [3,4,5,6,7], [3,4,5,6,7], [3,4,5,6,7]] 

Saya ingin melakukan ini agar saya dapat mengakses setiap nomor karena saya ingin melakukan beberapa matematika seperti (3+4)/2 dan (5+6)/2 untuk setiap set array.

Sampai sekarang saya menggunakan metode split sederhana:

string[] columns = text.Split(';');

Dan mencetaknya dengan menggunakan:

foreach (var item in columns)
{
    Console.WriteLine($"{item}");            
}

Tetapi ini tidak berhasil dan saya mendapatkan satu demi satu nomor yang masing-masing menunjukkan item yang terpisah. Saya ingin [3,4,5,6,7] sebagai satu item dan 5 item di dalam item khusus ini dan dalam bentuk bilangan bulat. Bisakah Anda membantu saya dengan cara melakukan ini?

0
Vedant Gonnade 23 Januari 2020, 14:44

2 jawaban

Jawaban Terbaik

Cobalah seperti ini:

var columns = text.Split(new[] { ";;" }, StringSplitOptions.RemoveEmptyEntries);            
foreach (var column in columns)
{
     var numbers = column.Split(';').Select(y => int.Parse(y));
}

Jika Anda ingin entri kosong, Anda harus Mengubah StringSplitOptions menjadi StringSplitOptions.None

2
SteveZ 23 Januari 2020, 11:59
var output = text.Split(";;", StringSplitOptions.RemoveEmptyEntries)
    .Select(s => s.Split(";").Select(i => int.Parse(i)));

Pisahkan dulu di ;;.

Kemudian untuk setiap kelompok, bagi lagi pada ;.

Kemudian parsing masing-masing ke int.


Perbarui sesuai komentar

Saya berasumsi bahwa entri kosong perlu diabaikan, tetapi jika tidak, hapus saja StringSplitOptions:

var output = text.Split(";;")
    .Select(s => s.Split(";").Select(i => int.Parse(i)));

Atau jika Anda harus kompatibel dengan .NET Framework:

var output = text.Split(new [] { ";;" }, StringSplitOptions.RemoveEmptyEntries)
    .Select(s => s.Split(';').Select(i => int.Parse(i)));

Atau untuk memasukkan entri kosong:

var output = text.Split(new [] { ";;" }, StringSplitOptions.None)
    .Select(s => s.Split(';').Select(i => int.Parse(i)));
2
Johnathan Barclay 23 Januari 2020, 12:04