2012-12-17 63 views
1

如何將兩個字符串(都是數字)加在一起而不將它們加在一起?例如:將兩個字符串連接在一起而不添加到Ruby on Rails中?

@output = 2567 + 18 

我不想要:

結果返回 「2585」(它在數學增加了兩個數)。

我確實想什麼:

結果返回 「256718」。正如你所看到的,這次這兩個數字已經連接在一起,沒有增加。

一個真實的例子:

Profile.create(:permalink => 2585 && User.last.id) 

當我運行從我的模型,該行 - 標題爲「永久」只是獲取最後創建的用戶ID的行,「2585」是不是在它的前面加入。另外,如果我像第一個例子那樣使用「+」方法而不是「& &」,則這兩個數字以數學方式加在一起。

任何想法?

回答

3

將這兩個值轉換爲字符串。第一個使用字符串文字,第二個使用to_s方法顯式轉換。

Profile.create(:permalink => "2585" + User.last.id.to_s) 
+0

完美!工作就像一個魅力,安德魯。非常感謝。在這種情況下,'.to_s'究竟做了什麼,我不明白? –

+1

它將由'User.last.id'返回的Fixnum(在您的示例中爲'18')轉換爲其字符串表示形式。你可以在這裏看到源代碼/文檔:http://www.ruby-doc.org/core-1.9.3/Fixnum.html#method-i-to_s –

0

我不太瞭解Ruby,但我會認爲使用字符串會告訴解釋器你想做什麼。請嘗試:

Profile.create(:permalink => "2585" + User.last.id) 
+0

嘿安德魯,謝謝你回到我身邊。不,沒有運氣那個建議 - rails會返回一個錯誤,指出它不能將Fixnum轉換成String。 –

+1

這將在Perl中工作,但Ruby是強類型的,所以你需要顯式地轉換類型。但是,Ruby字符串插值會將類型自動轉換爲字符串。 ':permalink =>「2585#{User.last.id}」' –

2

我想你可以嘗試將數量計劃** S轉換爲字符串**第一。 對於示例

@output = "2567" + "18" 

@output = (2567.to_s) + (18.to_s) 

都將得到256718,這是你想要的。

+0

是的,這就是安德魯哈伯斯在他的回答中所建議的。謝謝 :) –

相關問題