2014-05-07 13 views

risposta

15

Si potrebbe semplicemente utilizzare divisi, mappa e uniscono insieme qui.

string = 'I need help' 
result = string.split.map(&:first).join 
puts result #=> "Inh" 
+0

Scusate una domanda stupida, ma che cosa esattamente ogni parte di questo fatto? – user3606254

+0

Grazie mille! È stato molto utile per l'apprendimento di – user3606254

+1

s.split lo trasforma in un array: ['I', 'need', 'help'], la mappa passa attraverso ciascun frammento di array prendendo la sua prima lettera. Alla fine di s.split.map {| w | w [0]} otteniamo ["I", "n", "h"], e .join lo concatena in una stringa bella e pulita. –

1

soluzione alternativa usando espressioni regolari

string = 'I need help' 
result = string.scan(/(\A\w|(?<=\s)\w)/).flatten.join 

puts result 

Questo in sostanza dice "guarda sia per la prima lettera o qualsiasi lettera direttamente preceduto da uno spazio". La funzione di scansione restituisce array di matrici di corrispondenze, che vengono appiattite (trasformate in un array) e unite (trasformate in una stringa).

Problemi correlati