2016-10-10 3 views
-3

私は電話番号を受け取り、その番号から情報を引き出すことができるRubyのプログラムを持っています。市外局番、ルート、番号のプレフィックスを教えてくれます。どのようなタイプの入力がユーザーにラベル付けされるようにするためのプログラムを作成するには?

私は今、ユーザーがたとえばなど、この特定の電話番号は、それらの細胞であることを入力、作業番号、

できる場所別のパラメータを追加する:ここで

MyContact1 = Info.new ('(555) 555-5555', :home) 
=>(555) 555-5555 (home) 

MyContact1.label 
=>"home" 

MyContact2. = Info.new (' 555-555-5555, "work") 
=>(555) 555-5555 (work) 

が私のコードです:

class PhoneNumber 

    def initialize (ph) 
    @ph = ph 
    @ph.insert(0, '(') 
    @ph.insert(4, ')') 
    @ph.insert(5, ' ') 
    @ph.insert(9, "-") 
    end 
    def to_s 
    @ph 
    end 
    def area_code 
    @ph.slice(0..5) 
    end 
    def prefix 
    @ph.slice(6..8) 
    end 
    def root 
    @ph.slice(10..13) 
    end 
end 
print "Please enter a phone number: " 
puts a = PhoneNumber.new(gets.strip) 
puts a.area_code 
puts a.prefix 
puts a.root 
+1

をここで質問がありますか? –

+0

あなたは試してみる必要があり、それが失敗すると特定の質問をします。あなたのコードは、フィールドを追加しようとしているという証拠は表示されないので、私たちがあなたのために書きたいと思うように見えます。 「[ask]」とリンクされたページを「[mcve]」と「[Stack Overflowユーザーにはどの程度の研究努力が必要ですか?](http://meta.stackoverflow.com/q/261592)」と一緒にお読みください。 。 –

+1

国際電話番号を受け入れるように設計されたプロダクションコードまたはコードでは、電話番号に盲目的に情報を挿入しないことをお勧めします。あなたは、ユーザーがそれらをまだ置いていないと仮定しています。数字が米国を拠点としていない場合、あなたの書式は間違っています。代わりに、書式設定に使用したすべてのものを取り除き、値を保存してから、後でユーザーに提示する必要がある場合は、その地域や国に合わせて再フォーマットしてください。 –

答えて

0

ただ、より多くの引数を受け取るためにあなたのinitializeメソッドを拡張:

class PhoneNumber 

    attr_reader :label 

    def initialize(ph, label) 
    @ph = ph 
    @label = label 
    # ... 
    end 
    # ... 
end 

今、あなたは数ラベルを渡すことができ、あなたはこのラベルを取得するために定義されたメソッドがあります。

a = PhoneNumber.new('555-555-5555', :home) 
#=> #<PhoneNumber:0x007fd7cb149fb0 @label=:home, @ph="(555) -55-5-5555"> 
[8] pry(main)> a.label 
#=> :home 
関連する問題