0

Rails と MongoMapper を作業プラットフォームとして使用しています。

月と年の助けを借りてカスタム キーを生成したいと考えています。可能な形式はYYYYMM####

  • YYYY私が得ることができる現在の年ですDate.today.strftime("%Y")
  • MM私が得ることができる現在の月ですDate.tody.strftime("%m")
    • その後、###整数値がインクリメントされます

私はコードで最後の仕事を得る

jobForLastnum = Job.last(:order => :_id.desc)
lastJobNum = jobForLastnum.job_number

今私の質問はjob_number、「201305100」として受け取ったということです

カスタムの長さで分割したいのですが、['2013','05','100']

ルビーで文字列を分割する方法を知っていて、それを成功させましたが、次のような個々の文字として結果が得られました

['2','0','1','3','0','5','1','0','0']

これの助けを借りて、年を取得できました。

lastJobNum.to_s[0,4]

これの助けを借りて、私は月を得ました:

lastJobNum.to_s[4,2]

しかしその後、カスタムの長さの文字列があります。単一の配列ですべてのデータを取得するにはどうすればよいですか?

4

2 に答える 2

1

ここで正規表現が役立ちます。

jobNumber = 201305100
year, month, job_id = jobNumber.to_s.match(/(\d{4})(\d{2})(\d*)/)[1..3]

まず、jobNumber を String に変換します。次に、正規表現を投げます。正規表現には 3 つのキャプチャ グループ ((\d{4})年を表す 4 つの数字(\d{2})、月を表す 2 つの数字(\d*)、job_id を表す残りの数字) があります。

は、最初の 3 つのキャプチャ グループによってアクセスできるオブジェクトをjob_number.to_s.match(...)返します(ドキュメントを参照してください)。MatchData[1..3]

最後に、結果の配列を変数yearmonth、およびに割り当てますjob_id

year
#=> 2013
month
#=> 05
job_id
 #=> 100
于 2013-05-11T09:52:13.093 に答える