2

我对 Coldfusion 很陌生,不确定正确使用此功能的格式应该是什么。

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

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

无论如何,这将删除所有零以保留一个零。只是好奇。

预先感谢您的协助。

4

5 回答 5

5

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

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

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

<cfset newValue = '0' & int(000411111)>
于 2013-04-19T18:51:02.903 回答
2

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

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

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

于 2013-04-19T18:26:40.500 回答
2

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

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

此方法返回没有最左边 3 个字符的字符串

或者

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

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

于 2013-04-19T18:27:17.443 回答
2

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

newValue = removeChars(origValue, 1, 3);
于 2013-04-19T21:07:28.763 回答
0

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

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

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

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

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

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

于 2013-04-21T14:44:21.823 回答