Ben bir dize ters çalışıyorum, böylece 'abc defg hij'
olur 'jih gfed cba'
. Ortaya koyduğum çözüm
join(reverse(split(l:text, '.\zs')), '')
Daha zarif bir çözüm var mı yoksa bulduğum şeye bağlı kalmalı mıyım?
1
"Zarif" ile ne demek istediğine bağlı. Eğer bir dize tersine çevirmeye adanmış hiçbir dahili fonksiyon yoktur, eğer sormak istediğiniz buysa. Bunu iç işlevlere iki veya daha az çağrı ile yapmak ve ek bir ifade ile yapmak istemiyorsanız, bu da mümkün görünmüyor.
—
Sato Katsura
Geçerli bir çözüm zaten zarif hem de ve deyimsel.
—
romainl
'.' bölünmüş kısmında.
—
Christian Brabandt
@SatoKatsura aslında, bence daha verimli, çünkü regexp motorunun hiçbir şeyle eşleşmesi gerekmiyor. Ayrıca, bu dokümantasyondan tercih edilen yoldur.
—
Christian Brabandt
@ChristianBrabandt Kılavuza göre
—
Sato Katsura
split()
, {keepempty}
seçenek olmadan başlangıçta tek bir boş öğeyi ve sonunda tek bir boş öğeyi kaldırmalısınız. Şu anda listenin ortasındaki olanlar da dahil olmak üzere tüm boş öğeleri kaldırıyor (bana sorarsanız belgelenmiş davranıştan daha yararlıdır, ancak muhtemelen değilsiniz). Bence bu son zamanlarda tartışıldı vim_dev
.