文字列の最後の文字を取得したいMY WAY-1)最後のインデックスを取得2)最後のインデックスの文字を文字列として取得。その後、文字列を別の文字列と比較しますが、ここではコードのその部分を含めません。以下のコードを試してみましたが、代わりに奇妙な数字が表示されます。私はRuby 1.8.7。
なぜこれが起こっているのですか、どうすればいいですか?
line = "abc;"
last_index = line.length-1
puts "last index = #{last_index}"
last_char = line[last_index]
puts last_char
出力-
last index = 3
59
Ruby docs 配列スライスがこのように機能することを教えてくれました-
a = "hello there"
a[1] #=> "e"
しかし、私のコードではそうではありません。
UPDATE:私はこれについて常に一定の賛成票を得ているため、編集します。 [-1, 1]
を使用するのは正しいですが、見栄えの良いソリューションは[-1]
だけを使用することです。 Oleg Pischicovの答えを確認してください。
line[-1]
# => "c"
元の回答
Rubyでは、[-1, 1]
を使用して文字列の最後の文字を取得できます。ここに:
line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"
teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"
説明:文字列は、文字列の末尾から逆方向にカウントする負のインデックスと、必要な文字数(この中の1つ)を取ることができます例)。
OPの例のように String#slice
を使用する場合:(Ruby 1.9以降、Yu Hauの回答で説明されているように動作します)
line.slice(line.length - 1)
# => ";"
teststr.slice(teststr.length - 1)
# => "t"
さあ行こう!!!(
teststr.split('').last
# => "t"
teststr.split(//)[-1]
# => "t"
teststr.chars.last
# => "t"
teststr.scan(/.$/)[0]
# => "t"
teststr[/.$/]
# => "t"
teststr[teststr.length-1]
# => "t"
「-1」インデックスを使用するだけです:
a = "hello there"
a[-1] #=> "e"
最も簡単なソリューションです。
a[-1, 1]
を使用して、最後の文字を取得できます。
String#[]
の戻り値が変更されたため、予期しない結果が得られます。 Ruby 2.0のドキュメントを参照しながら、Ruby 1.8.7を使用しています。
Ruby 1.9の前に、整数文字コードを返します。Ruby 1.9なので、文字自体を返します。
str[fixnum] => fixnum or nil
str[index] → new_str or nil
Railsを使用している場合は、次のように#lastメソッドを文字列に適用します。
"abc".last
# => c
Rubyでは、次のようなものを使用できます。
ending = str[-n..-1] || str
これは最後のn文字を返します
文字列は配列なので、#lastメソッドを使用します。
最後のキャラクターを取得します。
"hello there".last() #=> "e"
最後の3文字を取得するには、#lastに数値を渡すことができます。
"hello there".last(3) #=> "ere"
Slice()メソッドはあなたのために行います。
Exの場合
"hello".slice(-1)
# => "o"
ありがとう
あなたのコードは動作します、あなたが見ている「奇妙な数字」は;
ASCII code。すべての文字は対応するアスキーコードを持っています( https://www.asciitable .com / )。conversationputs last_char.chr
に使用でき、;
を出力する必要があります。