2013-02-13 4 views
30

Ich frage mich, ob es ein Ruby-Idiom zum Extrahieren einer Teilzeichenfolge aus einem Index bis zum Ende der Zeichenfolge gibt. Ich kenne str[index..-1], die durch die Übergabe in einem Bereich Objekt an die String[] Methode funktioniert, aber es ist ein wenig klobig. In Python zum Beispiel könnten Sie schreiben str[index:], die implizit erhalten Sie den Rest der Zeichenfolge.Ruby-Idiom für Teilzeichenfolge vom Index bis zum Ende der Zeichenfolge

Beispiel:

s = "hello world" 
s[6..-1] # <-- "world" 

Gibt es etwas Schöneres, als s[6..-1]?

+0

Ich denke, explicity bekommen wollen, ist schöner als implicity in diesem Fall. – Flauwekeul

+0

@Flauwekeul Warum ist Range in dieser Hinsicht ein Clunk? –

+0

Was meinst du mit Clunk? – Flauwekeul

Antwort

9

Ich denke, es ist nicht.

Es scheint, dass Range ist der bessere Weg, es zu tun.

+1

Entschuldigung, könnten Sie klären? Du denkst '' 'Range''' (die Art, wie ich in der Frage habe) ist der beste Weg, es zu tun? –

+1

@SherwinYu, Ja, ist es. –

5

Hier ist 'netter', wenn Sie es wünschen. Sie können die Ruby-String-Klasse erweitern und diese Methode dann in Ihrem Code verwenden. Zum Beispiel:

class String 
    def last num 
    self[-num..-1] 
    end 
end 

Und dann:

s = "hello world" 
p s.last(6) 
+3

OP hat nicht angefordert, wie man die letzten X Buchstaben erhält. Sie haben gefragt, wie man Zeichen von X an das Ende der Zeichenkette bekommt. –

2

können Sie die String Klasse erweitern. Nicht sicher, ob es sich um eine rubin Idiom ist aber:

class String 
    def last(n) 
    self[(self.length - n)..-1] 
    end 
end 
+0

OP möchte die letzten Zeichen, die mit 'n' beginnen. Nicht die letzten 'n' Zeichen. –

3

Wenn Sie die Zeichenfolge aus einem Index auf die volle Schnurlänge

s = "hello world" 
s[ 5 .. s.length -1 ] 
+2

Es sollte 's [5..s.length - 1]' sein –

Verwandte Themen