как да проверите дали низът е валиден в рубин? Валиден низ ще включва само символ или цифрово число ИЛИ и двете. Ето какво опитах:
str = "abc."
str[3].is_a? Numeric
str[3].is_a? String
"." тук също е низ (тъй като ruby няма "char"), но в моята дефиниция за валиден низ "abc." е невалиден. Има ли някакъв метод в ruby за проверка на isLetter и isDigital като java?
Отговори:
2 за отговор № 1Вие сте на прав път. Просто ще искате да използвате регулярен израз, за да разберете кои символи да приемете / отхвърлите.
нещо подобно би приело всички малки и главни букви от азбуката.
str = "abc."
str[/([a-zA-Z]+)/]
Това работи, защото регулярният израз ([a-zA-Z]+)
съвпада с група ()
на един или повече +
знаци с малки букви a-z
или главни букви A-Z
знаци.
Можеш да използваш http://rubular.com/ да опитате различни регулярни изрази.
1 за отговор № 2
Търсите ли регулярен израз?
>> "abc." =~ /[a-zA-Z]/
=> 0
>> "abc." =~ /[0-9]/
=> nil
0 за отговор № 3
Regex: (Забележете, ако подчертаванията са приемливи символи, тогава /W/
е използваем).
def valid?(str)
(str =~ /[^a-zA-Z0-9]/).nil?
end
p valid? "123" # => true
p valid? "123$" # => false
Без регулярни изрази:
def valid?(str)
str.count("a-zA-Z0-9") == str.size
end
p valid? "123" # => true
p valid? "123$" # => false