【问题标题】:Add whitespace to string in Coldfusion在 Coldfusion 中为字符串添加空格
【发布时间】:2020-09-16 03:54:52
【问题描述】:

我需要在字符串末尾添加空格。

ColdFusion 似乎会自动删除我尝试添加的任何空格,有时我会得到 1 个空格字符,但仅此而已。

我有一个输入字段,一个字符串,最长可达 7 个字符。如果输入少于 7 个字符,我将用空格填充结尾。

有谁知道使用冷融合实现此目的的快速、简单、直观的方法。代码越少越好。

我尝试过的一些解决方案是:

 #LEFT(FORM.strInput & '       ', 7)#

 #LEFT(FORM.strInput & '        0', 7)#

 #REPLACE(LEFT(FORM.strInput & 0000000, 7), '0', ' ', 'all')#

<CFLOOP FROM="1" TO="7 - LEN(FORM.strInput)">
  <CFSET FORM.strInput = FORM.strInput & ' '>
</CFLOOP>

<CFLOOP FROM="1" TO="7 - LEN(FORM.strInput)">
  <CFSET FORM.strInput = FORM.strInput & '&nbsp;'>
</CFLOOP>

【问题讨论】:

  • 您的第一个注释掉的代码可以完成工作。你在看什么让你认为它没有?
  • 在哪里使用?如果您的意思是在 html 中显示空格字符,它会自动折叠多余的空格字符,即chr(32)。您必须改用不间断空格&amp;nbsp;trycf.com/gist/6e3557b943a2cf90b724fb7a86572e77/…
  • 当我将变量输出到屏幕时,只显示1个空格。前任。如果输入是 'BB1' 它会显示 'BB1' 而不是 'BB1' + space x7 但 LEN() 函数声明有 7 个字符所以我不确定。
  • @Agreax 根据你的意思,只要 LEN() 函数返回正确数量的字符,我应该没问题?我正在使用此输入来填充自定义 cf 标记的参数。我需要将此变量与空格一起传递给自定义 cf 标记。空格会和字符串一起传递吗?
  • Jimmy,如果len() 函数告诉你长度是7,那么它就是7。正如@Agreax 所说,永远不要依赖你看到的空白。验证输出的几种方法是在开发人员工具中使用 Inpect Element。另一种选择是使用预格式化的文本标签 &lt;pre&gt;...&lt;pre&gt; 显示输出,因为此标签不会忽略空格。

标签: string coldfusion append concatenation whitespace


【解决方案1】:

你可以使用repeatString()

<cfset form.strInput = form.strInput & repeatString( ' ', max( 7-len(form.strInput), 0 ) ) />

但是,请记住,如果您尝试在网页上显示多个连续的空格,浏览器将只会“显示”第一个。

【讨论】:

  • 您的代码解决方案存在一个问题。如果len(form.strInput) 大于7,那么这将引发错误,因为第二个参数将变为负数。
  • 修复了这个问题
  • 如果你没有使用旧版本的 ACF,我可以建议使用 &amp;= 进行连接,ACF 和 Lucee 现在都支持:form.strInput &amp;= repeatString()
【解决方案2】:

我喜欢 Scott 的回答,但我会稍微改进一下。

<script>
form.strInput &= repeatString(' ', max(7 - len(form.strInput), 0));
</script>

【讨论】:

  • 这段代码和我贴的代码在功能上没有区别。
  • 使用&amp;=减少打字次数
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多