0

我对这个有点难过。。

我目前有一个字符串。

请在此处输入您的 variable.firstname

我想做的是variable.firstname在字符串中找到并将其转换为用作#variable.firstname#

我正在使用 CF8,我查看了使用findNoCase()但该variable.firstname部分可以出现在任何地方。我还尝试在 Coldfusion 自定义标签中使用它来简单地显示可以动态填充的用户的名字。

我不能使用任何其他功能来更改它 IE = variable['firstname] 因为该变量可能是我传入的动态变量的结果,并且对内容的查询将驻留在自定义标记中。

4

3 回答 3

4
 <cfset yourNewString = replace(yourOldString,'variable.firstname', 
'##variable.firstname##', 'all')>

注意双磅符号。

于 2013-01-23T14:34:00.870 回答
0

我不能使用任何其他功能来更改它 IE = variable['firstname] 因为该变量可能是我传入的动态变量的结果,并且对内容的查询将驻留在自定义标记中。

我不确定我是否完全理解您在这里所说的内容,但如果您说 variables.firstname 来自另一个变量并且 .firstname 是动态部分,您仍然可以使用数组表示法。

<cfset myName = "Travis">
<cfset yourName = "user125264">
<cfset myCustomVariable = "myName">
<cfoutput>Hi, My name is #variables[myCustomVariable]#. </cfoutput>
<cfset myCustomVariable = "yourName">
<cfoutput>Your name is #variables[MyCustomVariable]#.</cfoutput>

输出:Hi, My name is Travis. Your name is user125264.

如果这不是你的意思,我很抱歉。

于 2013-01-23T14:51:27.643 回答
-1

如果您尝试将 variable.firstname 替换为 #variables.firstname# 然后还获取该变量的值,则需要进行替换<cfset yourNewString = replace(yourOldString,'variable.firstname', '##variables.firstname##', 'all')>,然后将生成的字符串包装在 evaluate() 函数(以及内部de() 以防止 CF 评估所有内容): <cfset evaluatedString = evaluate(de(yourNewstring))>.

如果除了 variable.firstname 之外还有更多需要这种翻译的变量,您需要使用 reReplace() 进入正则表达式,以便在一个语句中将它们全部捕获。我的正则表达式生锈了,所以你需要自己谷歌一下。;o)

于 2013-01-23T20:45:57.630 回答