如何在ColdFusion中从字符串中提取子字符串?

如何在ColdFusion中从字符串中提取子字符串?,coldfusion,Coldfusion,我有一个字符串,比如: oauth_token=xxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxx&oauth_callback_confirmed=true 我想把这些值提取成三个变量 你能推荐一下ColdFusion中最简单的方法吗?我想试试这样的方法: <cfloop list = "oauth_token=xxxxxxx&oauth_token_secret=xxxxx&oauth_callback_confir

我有一个字符串,比如:

oauth_token=xxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxx&oauth_callback_confirmed=true
我想把这些值提取成三个变量


你能推荐一下ColdFusion中最简单的方法吗?

我想试试这样的方法:

<cfloop 
list = "oauth_token=xxxxxxx&oauth_token_secret=xxxxx&oauth_callback_confirmed=true"      
index="pair" delimiter="&">
<cfset ListFirst(pair, "=") = ListLast(pair, "=")>
</cfloop>


我不确定它是否有效,但值得一试。

@Dan Bracuk很接近,这会满足你的需要

<cfset myString = "oauth_token=xxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxx&oauth_callback_confirmed=true">
<cfloop list="#myString#" index="pair" delimiters="&">
    <cfset myStruct[ListFirst(pair, "=")] = ListLast(pair, "=")>
</cfloop>

<cfdump var="#myStruct#">

除了公认的解决方案,还有另一种选择:

<cfset t = "oauth_token=abc&oauth_token_secret=def&oauth_callback_confirmed=true">
    <cfset oauth_token = ListGetAt(ListGetAt(t,1,"&"),2,"=")>
    <cfset oauth_token_secret = ListGetAt(ListGetAt(t,2,"&"),2,"=")>
    <cfset oauth_callback_confirmed = ListGetAt(ListGetAt(t,3,"&"),2,"=")>


我猜您正在尝试通过Facebook、twitter或谷歌实施身份验证。这些服务通常以JSON格式响应。您可能需要研究反序列化JSON。您可以反序列化您的http.filecontent并使用该结构获取所有三个变量的值。@Tushar Bhaware:我正试图与Xero集成,但我获取的文件内容是字符串。我得到的错误是“标记cfloop不允许使用属性分隔符”@user3270746-属性名称是“delimiters”(复数)而不是“delimiter”(单数)。值得注意的是,这确实假设返回的字符串始终处于相同的位置order@JohnWhish是的,我没有考虑过字符串返回的顺序。