2012-12-30 82 views
2

我想拆就信了以下字符串:的Ruby on號碼拆分VS字母

1234B 

總是有永遠只4位數字和一個字母。我只是想分割出來。

這是我的嘗試,我認爲我有正確的方法和正則表達式匹配的數字,但我不認爲我的語法或我的正則表達式與我試圖解決的問題有關。

"1234A".split(/^\d{4}/) 
+0

所以,你想分裂的信件。你爲什麼要拆分「不是數字」?還有其他角色類,你知道。標點符號和類似的東西:) –

+2

另外,通過「分割」來定義你的意思。在該輸入中發佈操作的預期結果。 –

+1

你能舉出一個你想要做什麼的例子嗎? –

回答

7

如果有總是 4個數字和1個字母,就沒有必要使用正則表達式來拆分字符串。只是這樣做:

str = "1234A" 
digits,letter = str[0..3],str[4] 
15

你想要的是不明確的,但這種情況一般的解決辦法是:

"1234A".scan(/\d+|\D+/) 
# => ["1234", "A"] 
0

它純粹是任何字符串目光從分裂的角度入組4:

"1234A".scan(/.{1,4}/) 
# => ["1234", "A"] 
-1

另一個沒有正則表達式版本:

str = "1234A" 

str.chars.to_a.last # => "A" 
str.chop   # => "1234" 
+0

使用'chars'然後轉換爲數組是一種複雜的方式。那麼'str [-1]'呢? –

+0

它看起來像OP有這個(簡單)問題的麻煩 - 這就是爲什麼我想提供一個或多或少可讀的答案。對於一個紅寶石新手來說,我認爲'str.chars.to_a.last'比'str [-1]'更有意思。我不認爲任何人都可以拿出比Alex更簡單的答案,但是恕我直言,它並沒有傷害到顯示有多少不同的方法可以解決這個問題。 – doesterr