2015-06-24 49 views
1

數字以字符串形式出現,如"000105",我試圖找到忽略前導零的好方法。想到RegEx,但有時可能難以閱讀。我目前所做的是:優雅的方法來削減數字字符串中的前導0嗎?

stack = "000105"    # => "000105" 
overflow = stack.to_i.to_s  # => "105" 

有沒有一些更簡單/優雅的方式來做到這一點?將此字符串轉換爲整數並返回字符串感覺很笨重。

回答

5

我會做這樣的事情:

overflow = stack.sub(/^0+/, '') 

或只是sub!如果想stack本身:

stack.sub!(/^0+/, '') 

我會使用sub而不是gsub,因爲它只需要匹配一次。

+0

錯過了。 :) .. – harshs08

+0

雅,子就夠了.. –

2

你可以做一個正則表達式替換使用

^0+ 

更換由empty string。看到演示。在@vks

https://regex101.com/r/vH0iN5/9

+0

使用plus可以提高性能。 –

1

建築回答,你可以做這樣的事情在Ruby中,

stack.sub!(/^0+/,'') 
+0

什麼? 'gsub'和'gsub!'之間的差異?有沒有像'ruby'中的'sub'這樣的函數,因爲這不需要在全局範圍內完成。 –

+1

@AvinashRaj - 'gsub'不會永久地改變它被調用的對象/變量。然而,大多數以'!'結尾的'爆炸'方法將永久地改變它們。當你只是想暫時改變某個計算的東西時,你會使用.gsub,但仍然不想永久地改變你的變量本身。 –

+1

@AvinashRaj y有'sub'檢查spickermann的答案。 – harshs08

相關問題