更换额外的零Coldfusion Cfset

更换额外的零Coldfusion Cfset,coldfusion,Coldfusion,我对Coldfusion非常陌生,不确定正确使用此函数的格式应该是什么 我想把000041111转换成0411111,去掉前三个零 <cfset origValue = "#query.column#"> <cfset newValue = ReReplace(origValue, "0+", "", "all")> <cfoutput>#newValue#</cfoutput> #新价值# 这将删除所有的零,但无论如何,只保留一个零。只是

我对Coldfusion非常陌生,不确定正确使用此函数的格式应该是什么

我想把000041111转换成0411111,去掉前三个零

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

#新价值#
这将删除所有的零,但无论如何,只保留一个零。只是好奇


提前感谢您的帮助

如果您总是想删除前三个字符,可以使用
right()
函数:

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


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

您可以通过两种不同的方式执行此操作:

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

此方法返回不包含最左边3个字符的字符串



此方法从位置4开始并获取字符串的其余部分。

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

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

如果您不知道长度,并且总是希望删除前导0,并在开始时留下一个,您可以这样做

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

我认为
numberFormat()
答案是最好的,但其他人一直建议使用
mid()
right()
,我认为这些方法虽然有效,但比你需要的更麻烦。如果您只想删除字符串的前三个字符,那么有一个函数。从你的问题来看,这是否真的达到了你想要的效果还不清楚:如果你只想在数字中填充太多的零,那么
numberFormat()
方法是最好的。如果是任意三个字符,那么这种方法更好

newValue = removeChars(origValue, 1, 3);

您要查找的正则表达式字符串实际上是在字符串的开头匹配2个或多个0,并将其替换为一个0

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

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

newValue=重新替换(原始值“^0+0”、“0”、“一”)

这应该将多个前导零替换为一个前导零,而不是在没有前导零的地方添加前导零


最后,使用regex的一个好地方是

多么好的一个小功能!我得记住那个。谢谢,亚当,不用担心。我已经将我的评论升级为答案,因为它可能是一个有效的选项。
newValue = removeChars(origValue, 1, 3);