【问题标题】:convert string to variable coldfusion将字符串转换为变量coldfusion
【发布时间】:2013-01-24 04:57:10
【问题描述】:

我对这个有点难过..

我目前有一个字符串。

请在此处输入您的变量名

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

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

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

【问题讨论】:

  • 注意:ColdFusion 中没有variable 作用域,应该是variables
  • 假设他确实指的是 VARIABLES 范围,而不是名为“variable”的 var。

标签: coldfusion tags


【解决方案1】:
 <cfset yourNewString = replace(yourOldString,'variable.firstname', 
'##variable.firstname##', 'all')>

注意双井号。

【讨论】:

  • 我建议使用 replacenocase 而不是 replace 只是为了更安全。
  • +1 使用replacenocase 和@duncan 上面提到的,ColdFusion 范围被命名为variables(带有's')不是变量。
【解决方案2】:

我无法使用任何其他功能来更改它 IE = variable['firstname] 因为变量可能是 a 我传入的动态变量和内容查询将驻留 在自定义标签内。

我不确定我是否完全理解您在此处所说的内容,但如果您说 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.

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

【讨论】:

    【解决方案3】:

    如果您尝试用#variables.firstname# 替换variable.firstname,然后还获取该变量的值,则需要替换<cfset yourNewString = replace(yourOldString,'variable.firstname', '##variables.firstname##', 'all')>,然后将生成的字符串包装在evaluate( ) 函数(和一个内部 de() 以防止 CF 评估 everything):&lt;cfset evaluatedString = evaluate(de(yourNewstring))&gt;.

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

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 2011-08-27
      • 2010-12-04
      • 2017-10-01
      • 2015-10-27
      • 2020-11-26
      相关资源
      最近更新 更多