2009-10-27 16 views
22

काम नहीं कर रहा है, मैं हर चार अक्षरों में एक बड़ी स्ट्रिंग को विभाजित करने की कोशिश कर रहा हूं। इस प्रकार मैं इसे करने की कोशिश कर रहा हूं:प्रत्येक चार वर्णों को विभाजित करने के लिए रूबी रेगेक्स

big_string.split(/..../) 

यह एक शून्य सरणी प्रदान कर रहा है। जहां तक ​​मैं देख सकता हूं, यह काम करना चाहिए। यह तब भी होता है जब मैं इसे online ruby regex test में प्लग करता हूं।

+0

आप रेगेक्स का उपयोग करके एक पूर्णांक क्यों विभाजित करेंगे? 10000 तक क्रमशः विभाजित करने और परिणामों को एक सरणी में संग्रहीत करने के बारे में कैसे। – Kai

उत्तर

78

कोशिश scan:

>> "abcd1234beefcakexyz".scan(/.{1,4}/) 
=> ["abcd", "1234", "beef", "cake", "xyz"] 
:

$ irb 
>> "abcd1234beefcake".scan(/..../) 
=> ["abcd", "1234", "beef", "cake"] 

या

>> "abcd1234beefcake".scan(/.{4}/) 
=> ["abcd", "1234", "beef", "cake"] 

वर्णों की संख्या 4 से विभाज्य नहीं है, तो आप भी शेष वर्ण प्राप्त कर सकते हैं

({1,4} लालच से 1 और 4 वर्णों के बीच पकड़ लेगा)

1

हम्म, मैं Rubular वहाँ क्या कर रहा है और क्यों है पता नहीं है - लेकिन

big_string.split(/..../) 

का अनुवाद करता है में

हर 4-चरित्र-अनुक्रम

में स्ट्रिंग विभाजित

जो

जैसे कुछ सही ढंग से परिणामस्वरूप होना चाहिए बजाय
["", "", "", "abc"] 
+0

आप अपने पहले '.' और') 'से क्यों बच रहे हैं? यह वैध रूबी नहीं है। – Volte

0

हूप्स।

str = 'asdfasdfasdf' 
c = 0 
out = [] 
inum = 4 
(str.length/inum).round.times do |s| 
    out.push(str[c, round(s * inum)]) 
    c += inum 
end 
+0

व्हाउप्स? कॉम्पैक्टनेस के लिए ++ 1 ... –

संबंधित मुद्दे