ฉันจะใช้สตริงและแปลงเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ใน Ruby ได้อย่างไร
ฉันจะใช้สตริงและแปลงเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ใน Ruby ได้อย่างไร
คำตอบ:
Ruby มีสองสามวิธีในการเปลี่ยนขนาดตัวพิมพ์ของสตริง ในการแปลงเป็นตัวพิมพ์เล็กให้ใช้downcase
:
"hello James!".downcase #=> "hello james!"
ในทำนองเดียวกันupcase
ใช้ตัวพิมพ์ใหญ่ทุกตัวและcapitalize
ใช้ตัวอักษรตัวแรกของตัวพิมพ์ใหญ่ แต่พิมพ์ส่วนที่เหลือให้เล็กลง:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
หากคุณต้องการแก้ไขสตริงให้เข้าที่คุณสามารถเพิ่มเครื่องหมายอัศเจรีย์ลงในวิธีใดวิธีหนึ่งต่อไปนี้:
string = "hello James!"
string.downcase!
string #=> "hello james!"
อ้างถึงเอกสารประกอบสำหรับ Stringสำหรับข้อมูลเพิ่มเติม
nil
; คุณควรใช้มันหากคุณต้องการเปลี่ยนวัตถุให้เข้าที่ไม่ใช่ถ้าคุณต้องการเก็บค่าไว้ในตัวแปรอื่น
.titleize
มาจาก Rails ไม่สามารถหาได้ในString
เอกสารทับทิม
titleize
จำเป็นต้องลบออกจากคำตอบนี้หรืออย่างน้อยก็ระบุว่าเป็นวิธี Rails
คุณสามารถหาวิธีทั้งหมดที่มีอยู่ใน String โดยการเปิด IRB และทำงาน:
"MyString".methods.sort
และสำหรับรายการเมธอดที่มีสำหรับสตริงโดยเฉพาะ:
"MyString".own_methods.sort
ฉันใช้สิ่งนี้เพื่อค้นหาสิ่งใหม่และน่าสนใจเกี่ยวกับวัตถุที่ฉันอาจไม่เคยรู้จักมาก่อน
String.public_instance_methods(false)
เพื่อค้นหาวิธีการแบบสาธารณะทั้งหมดที่กำหนดโดยString
เฉพาะ
เช่นเดียวกับ @endeR ที่กล่าวถึงหากการทำให้เป็นสากลเป็นเรื่องที่น่ากังวลอัญมณี unicode_utils นั้นมากเกินพอ
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
การจัดการสตริงใน Ruby 2.4 ตอนนี้มีความอ่อนไหวต่อ Unicode
downcase
เมธอดruby ส่งคืนสตริงด้วยตัวอักษรตัวพิมพ์ใหญ่แทนที่ด้วยตัวพิมพ์เล็ก
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
... และตัวพิมพ์ใหญ่คือ:
"Awesome String".upcase
=> "AWESOME STRING"
รางสนับสนุนอัญมณีที่ใช้งานให้upcase
, downcase
, swapcase
, capitalize
ฯลฯ วิธีการด้วยการสนับสนุนสากล:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
คุณสามารถค้นหาวิธีสตริงเช่น"strings".methods
คุณสามารถกำหนดสตริงupcase
, ,downcase
titleize
ตัวอย่างเช่น,
"hii".downcase
"hii".titleize
"hii".upcase
กระบวนการ. swapcaseแปลง latters ตัวพิมพ์ใหญ่ในสายอักขระเป็นตัวพิมพ์เล็กและตัวอักษรตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
ตั้งแต่ทับทิม 2.4 มีการสร้างขึ้นในเต็มรูปแบบการทำแผนที่กรณี Unicode ที่มา: https://stackoverflow.com/a/38016153/888294 ดูรายละเอียดเอกสารทับทิม 2.4.0: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
จะไม่ได้ผลสำหรับทุกคน แต่นี่ช่วยฉันได้หลายครั้ง ฉันเพิ่งพบปัญหากับ CSV ที่คืนค่า "TRUE หรือ" FALSE "ดังนั้นฉันเพิ่งเพิ่ม VALUE.to_s.downcase ==" true "ซึ่งจะคืนค่าบูลีนจริงถ้าค่าเป็น" TRUE "และเท็จถ้าค่าเป็น" FALSE " "แต่จะยังคงใช้ได้กับบูลีนจริงและเท็จ