我可以将一个数组分成两个独立的数组,每个原始数组中的元素由“:”分隔吗?冒号前面的文本放在array1中,冒号后面的文本放在array2中。
<cfset tempArr = DeserializeJSON(URL.data) />
<cfset selectList = "" />
<cfloop array=#tempArr# index="i">
<cfset selectList = listappend(selectList,i) />
</cfloop>
目前这段代码获取整个元素而不是分开获取。
编辑
一个示例字符串如下:
first_name:Bob
first_name进入selectList1 Bob进入selectList2
总体的方案也会有其他字段,例如:
first_name:Bob
last_name:Shmo
age:27
等等...
编辑:答案
通过使用以下代码解决了问题
<!---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>
getToken
。它相对于listFirst/Last
的优势在于您不需要验证长度。如果给定的列表元素不存在,getToken
将返回一个空字符串。在这种情况下,如果它少于两个元素。 - LeighgetToken(value, position, ":")
可能可以解决问题。但请更新你的问题以包括字符串样例和期望结果。 - Leighi
始终包含由单个冒号分隔的两个字符串,即foo:bar
,那么williambq的原始代码应该可以正常工作。(个人更喜欢getToken
,但从技术上讲,两者都可以。) - Leigh