替换Extra Zero Coldfusion Cfset

时间:2013-04-19 18:17:38

标签: coldfusion

我是Coldfusion的新手,不知道正确使用此功能的格式是什么。

我想将0000411111转换为0411111摆脱前三个零

<cfset origValue = "#query.column#"> 
<cfset newValue = ReReplace(origValue, "0+", "", "all")>
<cfoutput>#newValue#</cfoutput>

这样就可以删除所有零,只保留一个零。只是好奇。

提前感谢您的协助。

5 个答案:

答案 0 :(得分:5)

如果字符串始终为7个字符,则可以使用

<cfset newValue = numberFormat(000411111,'0000000')>

如果您不知道长度并且总是想要删除前导0并且在开始时留下一个

<cfset newValue = '0' & int(000411111)>

答案 1 :(得分:2)

如果您始终要删除前三个字符,可以使用right()功能:

<cfset newValue = right(query.column, len(query.column)-3>

这将返回字符串右侧的所有字符,而不包含前三个字符。

答案 2 :(得分:2)

你可以用两种不同的方式做到:

<Cfset newvalue=right(origvalue,len(origvalue)-3>

此方法返回不带左侧3个字符的字符串

<Cfset newvalue=mid(origvalue,4,len(origvalue)-3>

此方法从位置4开始并抓取其余字符串。

答案 3 :(得分:2)

我认为numberFormat()答案是最好的答案,但其他人一直建议使用mid()right()我认为 - 虽然这些方法有效 - 但比你需要的更麻烦做到这一点。如果你只想删除字符串的前三个字符,那就是removeChars()函数。虽然这个问题实际上是否达到了你想要的效果,但是你的问题还不清楚:如果只是当数字被左边填充并且你想要做太多的零时,那么numberFormat()方法是最好的。如果它是任意三个字符,那么这种方法更好。

newValue = removeChars(origValue, 1, 3);

答案 4 :(得分:0)

您正在寻找的正则表达式字符串实际上是在字符串的开头匹配2个或更多0,并用简单的0替换它们。

这给出了正则表达式^0+0

^匹配字符串的开头,0+匹配1个或更多0,0匹配第二个零。这意味着如果只有1个前导零,那么它将不需要做任何事情。最后你只需要做一次,因为你只是替换字符串开头的那些。这带来了CF代码

newValue = ReReplace(origValue, "^0+0", "0", "one")

这应该用一个零替换多个前导零,而不是在没有任何开头的地方添加零。

作为最后一点,使用正则表达式的好地方是http://gskinner.com/RegExr/