length適切な名前のメソッドを使用して、文字列の長さを取得できます。
string = 'foobar'
string.length # => 6
文字列が別の文字列で始まるかどうかは、次を使用して確認できますstart_with?。
string.start_with?('f') # => true
配列の添字表記(角括弧)と範囲を使用して、文字列の個々の文字をスライスできます。負のインデックスは、文字列の末尾からカウントされます。したがって、最初の文字を除くすべてを返すには、次のようにします。
string[1..-1] # => 'oobar'
だからあなたが求めていることをするためにあなたはこれらを組み合わせることができます
home_phone = row['HomePhone']
if home_phone.length == 10
puts home_phone
elsif home_phone.length == 11 && home_phone.start_with?('1')
puts home_phone[1..-1]
else
puts '0000000000'
end
このアプローチでは、電話番号がすでに数字の文字列であり、その長さを確認するだけでよいと想定していることに注意してください。より徹底して、のように数字以外を含む無効な電話番号をチェックしたい場合は123z567890、正規表現のアプローチを検討してください。
if match = /^1?(?<number>\d{10})$/.match(row['HomePhone'])
puts match[:number]
else
puts '0000000000'
end
この正規表現が一致するコンポーネントは次のとおりです。
^-文字列の先頭
1?-オプション1
(?<number>\d{10})\d{10}-というグループに保存された10桁(つまり)number
$-文字列の終わり
Rubyはスラッシュを使用して正規表現を区切り、matchメソッドは保存された10桁の数値を抽出するために使用できるオブジェクトを返します。