2014-11-06 214 views
0

我有一個字符串,如:如何在ColdFusion中從字符串中提取子字符串?

oauth_token=xxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxx&oauth_callback_confirmed=true 

我想這些值提取到三個變量。

您能否建議ColdFusion中最簡單的方法?

+0

我猜你正在試圖通過Facebook,Twitter或谷歌來實現認證。通常這些以JSON格式的服務響應。您可能想要查看反序列化JSON。您可以反序列化您的http.filecontent並使用該結構來獲取所有三個變量的值。 – 2014-11-06 10:54:20

+0

@ Tushar Bhaware:我正在嘗試與Xero集成,但我以字符串形式獲取文件內容。 – user3270746 2014-11-06 11:08:10

回答

6

@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#"> 
1

我會嘗試這樣的事:

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

我不知道,如果它的工作,但它是值得一試。

+0

我收到錯誤'標籤cfloop不允許使用屬性分隔符' – user3270746 2014-11-06 11:16:58

+1

@ user3270746 - 屬性名稱是「分隔符」(複數)而不是「分隔符」(單數)。 – Leigh 2014-11-06 17:56:23

0

還有另一種替代接受的解決方案:

<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,"=")> 
+2

值得注意的是,這確實假定返回的字符串總是以相同的順序 – 2014-11-06 11:28:12

+0

@JohnWhish,true。我沒有考慮以其他順序返回字符串的可能性。 – 2014-11-06 11:31:47

+0

@Tushar Bhaware:不錯................. Thanku ......... – user3270746 2014-11-06 11:32:31

相關問題