「文字列は動的に生成されます」 .
この時点で一重引用符を追加します。
(問題がある場合は、そのコードを投稿してください。問題を解決できます。)
後で正規表現でそれを行うことは理想的な解決策ではありません。
更新:これで、あなたが実際に何をしているかについての詳細情報が得られました...
CF データを Highcharts で使用する JS 文字列に変換するコードの概念実証を次に示します。
これは部分的な解決策です - 私はHighcharts API全体を調べていません。以下のコードの一部は半分しか実装されておらず、一部のビットは別の方法で実行する必要があるかもしれませんが、一般的にはこれがどのように機能するかについてのアイデアを与えるはずです.
あなた (および/または他の誰か) が以下のコードを取得して highcharts.cfc に展開したい場合は、CFML コミュニティにとって役立つものであると確信しています...
コード:
<cffunction name="convertToHighchartsJs" returntype="String" output=false >
<cfargument name="CfData" type="Struct" required />
<cfif NOT StructKeyExists(Arguments.CfData,'Series')>
<cfthrow message="Does not look like Highcharts data" />
</cfif>
<cfreturn "series:#serializeForHighcharts(Arguments.CfData.Series)#" />
</cffunction>
<cffunction name="serializeForHighcharts" returntype="String" output=false >
<cfargument name="Data" type="any" required />
<cfargument name="Name" type="String" optional />
<cfargument name="ParentName" type="String" optional />
<cfset var JsString = "UNABLE TO SERIALIZE" />
<cfif isStruct(Arguments.Data) >
<cfsavecontent variable="JsString"><cfoutput><!---
--->{<!---
---><cfloop item="local.CurItem" collection=#Arguments.Data#><!---
--->,#fixCase(CurItem)#:#serializeForHighcharts(Arguments.Data[CurItem],CurItem)#<!---
---></cfloop><!---
--->}<!---
---></cfoutput></cfsavecontent>
<cfset JsString = rereplace(JsString,'^\{,','{') />
<cfelseif isArray(Arguments.Data) >
<cfsavecontent variable="JsString"><cfoutput><!---
--->[<!---
---><cfloop index="local.CurItem" array=#Arguments.Data#><!---
--->,#serializeForHighcharts(CurItem)#<!---
---></cfloop><!---
--->]<!---
---></cfoutput></cfsavecontent>
<cfset JsString = rereplace(JsString,'^\[,','[') />
<cfelseif isSimpleValue(Arguments.Data) >
<cfset var ShouldBeQuoted = false />
<cfif StructKeyExists(Arguments,'Name')>
<cfif ListFindNoCase('name,text,renderTo,type,color,layout,align,verticalalign',Arguments.Name)>
<cfset ShouldBeQuoted = true />
</cfif>
<cfelseif StructKeyExists(Arguments,'ParentName') AND ListFindNoCase('categories',Arguments.ParentName) />
<cfset ShouldBeQuoted = true />
</cfif>
<cfif ShouldBeQuoted >
<cfset JsString = "'" & JsStringFormat(Arguments.Data) & "'" />
<cfelse>
<cfset JsString = Arguments.Data />
</cfif>
</cfif>
<cfreturn JsString />
</cffunction>
<cffunction name="fixCase" returntype="String" output="false" access="private">
<cfargument name="Text" type="String" required />
<cfif NOT StructKeyExists(Variables,'Camels')>
<cflock type="exclusive" name="regen_camels" timeout=10>
<cfset Variables.Camels = StructNew() />
<cfloop index="CurCamel" list="dataParser,dataURL,legendIndex,xAxis,yAxis">
<cfset Variables.Camels[CurCamel] = CurCamel />
</cfloop>
</cflock>
</cfif>
<cfif StructKeyExists(Variables.Camels,Arguments.Text)>
<cfreturn Variables.Camels[Arguments.Text] />
<cfelse>
<cfreturn Lcase(Arguments.Text) />
</cfif>
</cffunction>
テスト:
<cfset CfData =
{ 'Series':
[
{ 'name':'inbounds'
, 'data':
[ ['Date.UTC(2012,4,1)',0]
, ['Date.UTC(2012,4,2)',0]
, ['Date.UTC(2012,4,3)',0]
]
}
,
{ 'name':'outbounds'
, 'data':
[ ['Date.UTC(2012,4,1)',0]
, ['Date.UTC(2012,4,2)',0]
, ['Date.UTC(2012,4,3)',0]
]
}
]
} />
<cfset Expected = "series:[{name:'inbounds',data:[[Date.UTC(2012,4,1),0],[Date.UTC(2012,4,2),0],[Date.UTC(2012,4,3),0]]},{name:'outbounds',data:[[Date.UTC(2012,4,1),0],[Date.UTC(2012,4,2),0],[Date.UTC(2012,4,3),0]]}]" />
<cfset JsString = convertToHighchartsJs(CfData) />
<cfif JsString EQ Expected>
<h1 style="color:green">Matches</h1>
<cfelse>
<h1 style="color:red">different</h1>
</cfif>
<cfdump var=#{Received:JsString,Expected:Expected}# />