2013-06-05 8 views
5

में एक सरणी तोड़ रहा है क्या मैं एक सरणी को दो अलग-अलग हिस्सों में विभाजित कर सकता हूं जिसमें मूल तत्व में प्रत्येक तत्व को ":" से अलग किया गया है? पाठ से पहले ":" array1 को जाता है, के बाद पाठ ":"कोल्डफ्यूजन दो

<cfset tempArr = DeserializeJSON(URL.data) /> 
<cfset selectList = "" /> 
    <cfloop array=#tempArr# index="i"> 
<cfset selectList = listappend(selectList,i) /> 
</cfloop> 

अभी इस कोड को पूरे तत्व पकड़ लेता है और अलग से नहीं array2 को जाता है।

संपादित

एक नमूना स्ट्रिंग होगा:

first_name: बॉब


first_name selectList1 में चला जाता है बॉब selectList2


भव्य में चला जाता है चीजों की योजना अन्य क्षेत्रों वैसे ही होगा:

first_name: बॉब

last_name: Shmo

उम्र: 27

आदि ...

संपादित करें: उत्तर

कोड

कोड का उपयोग कर हल किया गया था 0
<!---Variables---> 
<cfset temp1 = "" /> 
<cfset temp2 = "" /> 
<cfset selectList1 = "" /><!---Holds column names for tables---> 
<cfset selectList2 = "" /><!---Holds query parameters for column names. Ie, 
            values for use in the WHERE clause---> 

<cfloop array=#tempArr# index="i"><!---Loop through contents of the array---> 
    <cfset temp1 = GetToken(i,1,":")/><!---Store the column name---> 
    <cfset temp2 = GetToken(i,2,":")/><!---Query parameter---> 

    <cfset selectList1 = listAppend(selectList1, temp1)/><!---Adds to list of column names---> 
    <cfset selectList2 = listAppend(selectList2, temp2)/><!---Adds to the list of query parameters---> 
</cfloop> 

उत्तर

9

मुझे लगता है कि आपके सरणी उदाहरण को देखे बिना, क्या आप सरणी में डेटा को दो सूचियों में विभाजित करना चाहते हैं?

<cfset selectList1 = listAppend(selectList1, listFirst(i,':')) > 
<cfset selectList2 = listAppend(selectList2, listLast(i,':')) > 
+2

+1 मैं सिर्फ एक समान जवाब लिखे गया था की मात्रा में लंबी सूची या सरणी विभाजित करने के लिए उपयोगी नाथन यंगमैन से स्क्रिप्ट नहीं मिली। आपने मुझे इसमें हरा दिया। –

+0

काफी नहीं, मैं पहले तत्व की तलाश कर रहा हूं, पहले और बाद में ":", पहले/अंतिम तत्व – Zac

+2

FYI नहीं: दूसरा विकल्प 'getToken' का उपयोग कर रहा है। 'सूची फर्स्ट/लास्ट' पर इसका लाभ आपको लंबाई को सत्यापित करने की आवश्यकता नहीं है। दिए गए सूची तत्व मौजूद नहीं होने पर 'getToken' एक खाली स्ट्रिंग देता है। इस मामले में यदि इसमें दो से कम तत्व हैं। – Leigh

1
<cfscript> 
variables.lstString    = "First_Name:John,Last_Name:McClane"; 
variables.lstFields    = ""; 
variables.lstValues    = ""; 

for(variables.i=1;variables.i lte listlen(variables.lstString,',');variables.i++){ 
    variables.lstFields   &= (listlen(variables.lstFields) gt 0) ? ",#getToken(getToken(variables.lstString,variables.i,','),1,':')#" : getToken(getToken(variables.lstString,variables.i,','),1,':'); 
    variables.lstValues   &= (listlen(variables.lstValues) gt 0) ? ",#getToken(getToken(variables.lstString,variables.i,','),2,':')#" : getToken(getToken(variables.lstString,variables.i,','),2,':'); 
} 

writeDump(variables.lstFields); 
writeDump(variables.lstValues); 
</cfscript> 
0

क्यों किसी सूची में सरणी परिवर्तित

<cfset list = arraytolist(array,",")> 

नहीं और उसके बाद तत्वों का पहला हिस्सा हो रही है, उदा के लिए regex का उपयोग सरणी के आधे लेन या जो भी आपको खंड आकार पसंद है।

<cfscript> 
    function ListSplit(list, chunkysize, delim) 
    { 
     var result = ArrayNew(1); 
     var re = ""; 
     var start = 1; 
     while(1) { 
      re = REFind("((?:[^#delim#]+#delim#){1,#chunkysize#})", list & delim, start, "true"); 
      if(re.len[1] eq 0) break; 
      ArrayAppend(result, Mid(list,re.pos[1],re.len[1]-len(delim))); 
      start = re.pos[1] + re.len[1]; 
      if(start gte len(list)) break; 
     } 
     return result; 
    } 
</cfscript> 
<cfset newarray = ListSplit(list, chunksize, ",")> 

उदहारण के लिए:

<cfset chunksize = int(listlen(list)/2)+1> 

और फिर एक listpart (हिस्सा) प्रत्येक तत्व में साथ एक नई सरणी करना सूची 1,2,3,5,10,11,22,33,44,55,60,61,62,63,64 और आप सूची को 2 भागों में विभाजित करना चाहते हैं तो चुनौती 8 होगी सरणी परिणाम [1] = "1,2,3,5,10,11,22,33" परिणाम [2] = "44,55,60,61,62,63,64"

या के साथ 3 भाग प्राप्त करें परिणाम [1] = "1,2,3,5,10" परिणाम [2] = "11,22,33,44,55" परिणाम [3] = "60,61,62,63,64"

इत्यादि।

मैं https://gist.github.com/nathany/742242 इसकी बहुत दिए गए आकार