我对 Coldfusion 很陌生,不确定正确使用此功能的格式应该是什么。
我想将 0000411111 转换为 0411111 摆脱前三个零
<cfset origValue = "#query.column#">
<cfset newValue = ReReplace(origValue, "0+", "", "all")>
<cfoutput>#newValue#</cfoutput>
无论如何,这将删除所有零以保留一个零。只是好奇。
预先感谢您的协助。
我对 Coldfusion 很陌生,不确定正确使用此功能的格式应该是什么。
我想将 0000411111 转换为 0411111 摆脱前三个零
<cfset origValue = "#query.column#">
<cfset newValue = ReReplace(origValue, "0+", "", "all")>
<cfoutput>#newValue#</cfoutput>
无论如何,这将删除所有零以保留一个零。只是好奇。
预先感谢您的协助。
如果字符串始终为 7 个字符,您可以使用
<cfset newValue = numberFormat(000411111,'0000000')>
如果您不知道长度并且总是想删除前导 0 并在开头留下一个,您可以这样做
<cfset newValue = '0' & int(000411111)>
如果你总是想删除前三个字符,你可以使用right()
函数:
<cfset newValue = right(query.column, len(query.column)-3>
这将返回字符串右侧的所有字符,不包括前三个字符。
你可以用两种不同的方式做到这一点:
<Cfset newvalue=right(origvalue,len(origvalue)-3>
此方法返回没有最左边 3 个字符的字符串
或者
<Cfset newvalue=mid(origvalue,4,len(origvalue)-3>
此方法从位置 4 开始并抓取字符串的其余部分。
我认为numberFormat()
答案是最好的,但其他人一直在建议使用mid()
,right()
我认为 - 虽然这些方法有效 - 比你需要做的更麻烦。如果您只是想删除字符串的前三个字符,则有一个removeChars()
函数。从您的问题中不清楚这是否真的达到了您想要的效果:如果只有当数字左填充有太多零时您想要这样做,那么该numberFormat()
方法是最好的。如果是任意三个字符,那么这种方法会更好。
newValue = removeChars(origValue, 1, 3);
您正在寻找的正则表达式字符串实际上是在字符串的开头匹配 2 个或多个 0,并将它们替换为简单的单个 0。
这给出了正则表达式^0+0
^
匹配字符串的开头,0+
匹配 1 个或多个 0,0
匹配第二个零。这意味着如果只有 1 个前导零,那么它不需要做任何事情。最后,您只需要执行一次,因为您只替换字符串开头的那些。这带来了 CF 代码
newValue = ReReplace(origValue, "^0+0", "0", "one")
这应该用一个 1 替换多个前导零,而不是在没有任何开头的地方添加零。
最后一点,玩正则表达式的好地方是http://gskinner.com/RegExr/