คำถามง่ายๆ แต่หาไม่เจอในเอกสาร
ฉันจะตัดสตริงหรืออาร์เรย์จากn
จนตลอดไปได้อย่างไร
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
คำถามง่ายๆ แต่หาไม่เจอในเอกสาร
ฉันจะตัดสตริงหรืออาร์เรย์จากn
จนตลอดไปได้อย่างไร
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
คำตอบ:
ใช้การทำดัชนีย้อนกลับ:
[1..-1]
องค์ประกอบใน Ruby (และภาษาอื่น ๆ ) มีดัชนีตรงไปตรงมาและดัชนี "กลับด้าน" ดังนั้นสตริงที่มีความยาวn
มี0..(n-1)
เพิ่มเติมและ(-n)..-1
ดัชนี แต่ไม่มาก - คุณไม่สามารถใช้>=n
หรือ<-n
ดัชนี
'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's'
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
<- error | you can use this | error ->
ใช้ -1 :-)
'Austin'[1..-1] # => "ustin"
สวยสง่าโดยใช้ช่วงที่ไม่มีที่สิ้นสุดที่แนะนำใน Ruby 2.6:
string = 'Austin'
string[1..] # => ustin
หวังว่าจะเป็นประโยชน์สำหรับใครบางคน ตัดตัวละครสองสามตัวจากแนวทางที่ดีที่สุดจนถึงตอนนี้และจะอ่านได้มากเมื่อมีการนำช่วงที่ไม่มีที่สิ้นสุดมาใช้เป็นประจำ
หากคุณกำหนดสตริงให้กับตัวแปรคุณสามารถใช้ length / size
string = 'Austin'
string[1..string.length] # => ustin
string[1..string.size] # => ustin