webentwicklung-frage-antwort-db.com.de

Holen Sie sich das letzte Zeichen in der Zeichenfolge

Ich möchte das letzte Zeichen in einer Zeichenfolge erhalten MY WAY - 1) Letzten Index abrufen 2) Zeichen am letzten Index als STRING abrufen Danach werde ich die Zeichenfolge mit einer anderen vergleichen, aber ich werde diesen Teil des Codes hier nicht einfügen. Ich habe den folgenden Code ausprobiert und bekomme stattdessen eine seltsame Nummer. Ich benutze Ruby 1.8.7.

Warum passiert das und wie mache ich das?

line = "abc;"
last_index = line.length-1
puts "last index = #{last_index}"
last_char = line[last_index]
puts last_char

Ausgabe-

last index = 3
59

Ruby docs hat mir gesagt, dass das Aufteilen von Arrays auf diese Weise funktioniert - 

a = "hello there"
a[1] #=> "e"

Aber in meinem Code nicht.

23
stack1

UPDATE: Ich bekomme ständig Stimmen dazu, daher die Bearbeitung. Die Verwendung von [-1, 1] ist korrekt, eine besser aussehende Lösung wäre jedoch nur [-1]. Überprüfen Sie die Antwort von Oleg Pischicov.

line[-1]
# => "c"

Originalantwort

In Ruby können Sie [-1, 1] verwenden, um das letzte Zeichen einer Zeichenfolge abzurufen. Hier:

line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"

teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"

Erläuterung: Zeichenfolgen können einen negativen Index annehmen, der ab dem Ende Der Zeichenfolge rückwärts zählt und die Länge der Anzahl der gewünschten Zeichen (in diesem Beispiel ein. 

Verwenden Sie String#slice wie in OPs Beispiel: (funktioniert nur bei Ruby 1.9 und weiter, wie in Yu Hau's Antwort erläutert).

line.slice(line.length - 1)
# => ";"
teststr.slice(teststr.length - 1)
# => "t"

Lass uns verrückt werden !!!

teststr.split('').last
# => "t"
teststr.split(//)[-1]
# => "t"
teststr.chars.last
# => "t"
teststr.scan(/.$/)[0]
# => "t"
teststr[/.$/]
# => "t"
teststr[teststr.length-1]
# => "t"
43
shivam

Verwenden Sie einfach den Index "-1":

a = "hello there"

a[-1] #=> "e"

Es ist die einfachste Lösung.

39
Oleg Pischicov

Sie können a[-1, 1] verwenden, um das letzte Zeichen zu erhalten.

Sie erhalten ein unerwartetes Ergebnis, da sich der Rückgabewert von String#[] geändert hat. Sie verwenden Ruby 1.8.7, während Sie auf das Dokument von Ruby 2.0 verweisen

Vor Ruby 1.9 gibt es einen ganzzahligen Zeichencode zurück. Seit Ruby 1.9 wird das Zeichen selbst zurückgegeben.

String#[] in Ruby 1.8.7

str[fixnum] => fixnum or nil

String#[] in Ruby 2.0 :

str[index] → new_str or nil
5
Yu Hao

Wenn Sie Rails verwenden, wenden Sie die Methode #last auf Ihre Zeichenfolge wie folgt an:

"abc".last
# => c
5
victorhazbun

In Ruby kannst du so etwas verwenden:

ending = str[-n..-1] || str

dies gibt die letzten n Zeichen zurück

1
Aram

Ich würde die Methode #last verwenden, da der String ein Array ist.

Um den letzten Charakter zu bekommen.

"hello there".last() #=> "e"

Um die letzten 3 Zeichen zu erhalten, können Sie eine Zahl an #Last übergeben.

"hello there".last(3) #=> "ere"
1
Charles Hamel

Slice () Methode wird für Sie tun.

Für Bsp 

 "hello".slice(-1)
 # => "o"

Vielen Dank

0
Breen ho

Ihr Code funktioniert irgendwie, die 'seltsame Nummer', die Sie sehen, ist ; ASCII Code. Jedes Zeichen hat einen entsprechenden ASCII-Code ( https://www.asciitable.com/ ). Sie können für conversationputs last_char.chr verwenden, es sollte ; ausgegeben werden.

0
Pierre Ferry