Masukkan berbagai tipe data dalam kotak teks dan masukkan ke dalam array Objek

Masukkan berbagai tipe data dalam kotak teks dan masukkan ke dalam array Objek

Saya ingin cara agar pengguna dapat mengetikkan berbagai tipe data ke dalam Kotak Teks seperti:

“a”, 1, 1.5, “b”

Dan kemudian membaginya dengan “,” dan memasukkannya ke dalam array atau daftar Objek. Sesuatu yang mirip dengan ini kecuali dengan objek jadi saya dapat mengenalinya sebagai string, int, dll.

String sample = textbox; 
String samples = sample.Split(new Char[] {','});
            foreach (var x in samples)

Terima kasih


person TheIdiot    schedule 21.02.2015    source sumber
comment
Ada tiga operasi, membuat kotak teks WPF, mengonsumsi data, dan memproses data. Di antara ketiganya, manakah masalah yang Anda alami? Saya menyarankan Anda membatasi pertanyaan pada salah satu dari tiga; bagi saya sepertinya Anda hanya perlu bantuan untuk menguraikan data dan kotak teks WPF adalah tambahan dan tidak diperlukan untuk mendefinisikan masalahnya.   -  person ΩmegaMan    schedule 22.02.2015


Jawaban (1)


Ini adalah proses dua langkah. Langkah 1 adalah mengurai baris CSV dari pengguna dan langkah 2 adalah mengidentifikasi teks lurus sejumlah (saya memilih ganda) ayat. Saya lebih suka Ekspresi Reguler karena fleksibilitasnya (setelah dipelajari) dan yakin kedua langkah tersebut dapat diselesaikan menggunakan regex.

Jika Anda melakukan pencarian, ada seluruh pertanyaan StackOverflow tentang topik mengidentifikasi angka. Persyaratan Anda tampaknya merupakan persyaratan dasar, dan dengan pemahaman itu saya akan memberikan pemeriksaan teks ayat angka dasar menggunakan ekspresi reguler. (Perhatikan bahwa ini dapat diperluas untuk lebih membatasi kemungkinan):

List<object> items = new List<object>();
string data = "a, 1, 1.5, b";

Regex.Matches(data, "[^,]+") // Get each object without a comma over the line.
     .OfType<Match>()
     .Select (mt => mt.ToString().Trim()) // Remove any whitespace (if any)
     .ToList()
     .ForEach(itm => items.Add(Regex.IsMatch(itm, "[a-zA-Z]")  ?          // Is it
                                            (object) itm :                // a string
                                            (object) Double.Parse(itm))); // a number

Console.WriteLine ( string.Join( " | ", items.Select (obj => obj.ToString())));
// Writes:
// a | 1 | 1.5 |  b

Console.WriteLine ( string.Join( ", ", items.Select (obj => obj.GetType())));
// Writes:
// System.String, System.Double, System.Double, System.String
person ΩmegaMan    schedule 21.02.2015