我是Coldfusion的新手,不知道正确使用此功能的格式是什么。
我想将0000411111转换为0411111摆脱前三个零
<cfset origValue = "#query.column#">
<cfset newValue = ReReplace(origValue, "0+", "", "all")>
<cfoutput>#newValue#</cfoutput>
这样就可以删除所有零,只保留一个零。只是好奇。
提前感谢您的协助。
答案 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/