/ / как да проверите низът е валиден в рубин? Валиден низ ще включва само символ или цифров номер ИЛИ и двете - ruby

как да проверите дали низът е валиден в рубин? Валиден низ ще включва само символ или цифров номер ИЛИ двете - рубин

как да проверите дали низът е валиден в рубин? Валиден низ ще включва само символ или цифрово число ИЛИ и двете. Ето какво опитах:

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