Terinspirasi oleh pertanyaan StackOverflow ini .
Memasukkan:
Kami akan mengambil tiga input:
- Karakter pembatas
Duntuk dibagi - Karakter di
Iantara dua di antaranya kita abaikan karakter pembatas (saya tahu, itu terdengar kabur, tapi saya akan jelaskan di bawah) - Sebuah benang
S
Keluaran:
Daftar / array yang berisi substring setelah split.
Contoh:
Input:
D = ','
I = '"'
S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Mengapa? Memisahkan pada koma biasanya juga akan terpecah 98,00, 12,000,000dan ,-,dalam dua / tiga bagian. Tetapi karena mereka berada dalam Ikarakter input, kami abaikan mengabaikan pemisahan di sini.
Aturan tantangan:
- Anda dapat mengasumsikan akan selalu ada jumlah genap
Idalam string-input. - Anda dapat mengasumsikan bahwa karakter
Iakan selalu memiliki karakter diDsebelahnya (kecuali ketika karakter input pertama atau terakhir) yang masih dapat dipisah dengan benar. Jadi Anda tidak akan memiliki sesuatu seperti iniD = ','; I = '"'; S = 'a,b"c,d"e,f', atau sesuatu seperti iniD=','; I='"'; S='a",b,"c'. - Input-string tidak
Sboleh mengandung salah satuDatauI. Jika tidak mengandungD, kami mengeluarkan daftar dengan seluruh string-input sebagai satu-satunya item. - Daftar keluaran tidak akan berisi karakter
Ilagi, bahkan ketika itu tidak berisiD(seperti yang Anda lihat di"Abc "menjadi'Abc 'dalam contoh di atas). - Mungkin saja substring di
Idalamnya hanya berisiD. Misalnya:D = ','; I = '"'; S = 'a,",",b,"c","d,e,,",f'akan menghasilkan['a', ',', 'b', 'c', 'd,e,,', 'f']. - Anda dapat mengasumsikan bahwa
Dtidak akan pernah ada di awal atau akhirS, sehingga Anda tidak harus berurusan dengan tertinggal / memimpin item kosong. - Ketika input memiliki dua yang berdekatan
D, kami akan memiliki item kosong. YaituD = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'akan menghasilkan['a', 'b,c', 'd', '', 'e', '', 'f']. - Anda dapat mengasumsikan input dan output hanya akan berisi ASCII yang dapat dicetak dalam kisaran
[32, 126](jadi tidak termasuk tab dan baris baru). - Anda juga diperbolehkan untuk mengeluarkan semua item yang dibatasi oleh baris baru alih-alih mengembalikan / mengeluarkan daftar / larik (terutama untuk bahasa-bahasa yang tidak memiliki daftar / larik; yaitu Retina).
- Anda diizinkan untuk mengeluarkan daftar dalam urutan terbalik jika menyimpan byte. Anda tidak diizinkan untuk output dalam urutan diurutkan atau 'diacak'. Jadi
D = ','; I = 'n'; S = 'a,2,b,3,c'bisa berupa output sebagai[a,2,b,3,c]atau[c,3,b,2,a], tetapi tidak sebagai[2,3,a,b,c,]atau[a,3,b,c,2]misalnya.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input:
D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
Output:
['a', 'b,c', 'd', '', 'e', '', 'f']
Input:
D = ','; I = '"'; S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Input:
D = ' '; I = ','; S = 'this is a test , to see if you understand it, or not , hmmm, I think I have too many commas , or not , perhaps..'
Output:
['this', 'is', 'a', 'test', ' to see if you understand it', 'or', 'not', ' hmmm', 'I', 'think', 'I', 'have', 'too', 'many', 'commas', ' or not ', 'perhaps..']
Input:
D = 'x'; I = 'y'; S = 'contains no lowercase X nor Y'
Output:
['contains no lowercase X nor Y']
Input:
D = '1'; I = '3'; S = '3589841973169139975105820974944592078316406286208948254211370679314'
Output: ['58984197', '69', '9975105820974944592078', '64062862089482542', '', '70679', '4']
Input:
D = ' '; I = 'S'; S = 'regular split on spaces'
Output:
['regular', 'split', 'on', 'spaces']
D = ','; I = '"'; S = ',"a,b",c,,d,""'saya perhatikan. Saya akan sedikit memodifikasi tantangan sehingga item kosong tidak akan mungkin pada awal atau akhir. Berdasarkan pengalaman di Jawa dan 05AB1E di masa lalu, saya tahu betapa frustasi item kosong setelah split dapat diperbaiki secara manual ketika bahasa tidak melakukannya dengan benar secara default. Kasus uji seperti ini harus tetap didukung: D = ','; I = '"'; S = 'a,"b,c",d,,e→ ['a', 'b,c', 'd', '', 'e']dengan item kosong di antaranya.
'1,"2,3"' -> ['2,3','1']
[a,b,c]dan [c,b,a]diizinkan output, tetapi [a,c,b]atau [b,a,c]tidak misalnya.
D=','; I='"'; S='a",b,"c'atau bahkan masukan yang valid?
"", "'ll remove all ", "")